Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: Zinc en 24 Octubre 2012, 05:35 am



Título: Error ante un submit
Publicado por: Zinc en 24 Octubre 2012, 05:35 am
Hola, buenos días para todos.
Estoy haciendo un deploy de un servidor de desarrollo a uno de producción de una app que estoy haciendo pero resulta que ya en producción hay cosas que no me funcionan y no sé porqué.
A continuación les dejo una parte pequeña del código que no funciona correctamente:

Código
  1. <?php
  2. include("clases/Empresa.php");
  3. include("script_validaciones.php");
  4. $Empresa = new Empresa;
  5.  
  6. if ($Empresa->conexion){
  7. if(isset($_POST['submit'])){
  8. $campos[0] =  $_POST["direccion"];
  9. $campos[1] = $_POST["telefono"];
  10. $campos[2] = $_POST["persona"];
  11. $campos[3] = $_POST["id"];
  12. $campos[4] = $_SESSION['UsuarioActual'];
  13. $campos[5] = $_POST['nombre'];
  14. if(validarFormulario($campos)){
  15.  
  16. if ($Empresa->ActualizarEmpresa($campos) or die(mysql_error())) {
  17. header("location: http://www.google.com.ar");
  18. };
  19. };
--Comentarios de código: Por favor, abstraerse de problemas de sintaxis, falta de llaves de bloques,etc.

Suponiendo que "ActualizarEmpresa" dió TRUE, PHP debería redirigir hacia Google a modo de prueba, el problema está en que cuando se realiza el posteo(sí, el posteo es efectivo, los datos se guardan perfectamente) queda ahí en actualizar.php y no redirige.
¿Podrían decirme que puede estar pasando?.

Desde ya, gracias.

Saludos!


Título: Re: Error ante un submit
Publicado por: RevangelyonX en 24 Octubre 2012, 13:57 pm
Hola,

Posiblemente no hayas acabado de ponernos todo el código porque te falta cerrar:
Código:
if ($Empresa->conexion){

De todos modos, verifica en php.ini que el error_report no esté ocultandote mensajes de error ni warnings.

Sería interesante que nos mostraras el código de la función:

validarFormulario()

Salu2




Título: Re: Error ante un submit
Publicado por: Zinc en 24 Octubre 2012, 14:27 pm
Hola, gracias por contestar.
El problema no es a nivel de sintaxis ya que sino me lo estaría mostrando el editor, voy a verificar lo que me dijiste del php.ini.

Por otro lado esa función validarFormulario, lo unico que hace es controlar que los campos recibidos no estén vaciós.

Comentario al pasar:
En el mismo código probé poniendo el header después del isset y tampoco redirige, la verdad no sé que pasa.

Saludos y gracias.


Título: Re: Error ante un submit
Publicado por: apuromafo CLS en 24 Octubre 2012, 16:22 pm
no tengo tanta experiencia en php, pero si  creo que debe ser por tener que usar cosas como session_write_close() antes de terminar o bien tu ejemplo de usar
  • y asi numerado este dando otros buffer esto viene de http://cl1.php.net/session_start
Código:
<?php
session_start();
$_SESSION[0] = 'this is a test';
$_SESSION[1] = 'this is also a test';
$_SESSION['test0'] = 'this is a test';
$_SESSION['test1'] = 'this is also a test';
session_write_close();

session_start();
echo "Session var 0 = ".$_SESSION[0]."<br />";
echo "Session var 1 = ".$_SESSION[1]."<br />";
echo "Session var 'test0' = ".$_SESSION['test0']."<br />";
echo "Session var 'test1' = ".$_SESSION['test1'];

?>
muestra esto (idea http://www.apuro.net23.net/red.php)
Session var 0 =
Session var 1 =
Session var 'test0' = this is a test
Session var 'test1' = this is also a test



 por otro lado

has intentado otra forma de redireccionar como
<?php
  header( "refresh:5;url=wherever.php" );
  echo 'You\'ll be redirected in about 5 secs. If not, click <a href="wherever.php">here</a>.';
?>

o bien como google.com.ar
Código:
<?php
  header( "refresh:5;url=http://www.google.com.ar" );
  echo 'You\'ll be redirected in about 5 secs. If not, click <a href="http://www.google.com.ar">here</a>.';
?>
ambas redirecciones funcionan bien en mi servidor de hosting gratuito

supongo debe ser algo relacionado a la sesion o como se manejan las variables(dandole parametros))
saludos Apuromafo


Título: Re: Error ante un submit
Publicado por: Zinc en 24 Octubre 2012, 16:32 pm
No sé si el problema lo tiene el header, ya que ejecuté un script de prueba que redirige en el mismo servidor y lo ejecuto sin problemas, la verdad no sé.

Probé esto:

Código
  1. if ($Empresa->conexion){
  2. if(isset($_POST['submit'])){
  3. header("location: http://www.google.com.ar");
  4. $campos[0] =  $_POST["direccion"];
  5. $campos[1] = $_POST["telefono"];
  6. $campos[2] = $_POST["persona"];
  7. $campos[3] = $_POST["id"];
  8. $campos[4] = $_SESSION['UsuarioActual'];
  9. $campos[5] = $_POST['nombre'];
  10. if(validarFormulario($campos)){
  11.  
  12. if ($Empresa->ActualizarEmpresa($campos) or die(mysql_error())) {
  13. header("location: http://www.google.com.ar");
  14. };
  15. };
  16. }
  17.  
  18. }

Y...nada.


Título: Re: Error ante un submit
Publicado por: apuromafo CLS en 24 Octubre 2012, 18:27 pm
insisto yo creo que hay algo mas en la sintaxis abrir una sesion
session_start();
sin cerrarla ...es dejar al header que no te permita hacerlo

es mas si aun asi no lo hiciera, deberias crear los parametros de redireccion temporal o definitiva si el header ya fue dado...

vuelve a leer el ejemplo
if ($Empresa->conexion){
si no se cumple el empresa conexión fin!! por ende lo siguiente no se ejecuta

if(isset($_POST['submit'])){


Título: Re: Error ante un submit
Publicado por: Zinc en 24 Octubre 2012, 19:34 pm
Pero como puede ser que un servidor funcione y en otro no?
Es que este caso la conexión es exitosa y el submit también, porque en la base de datos los registros se guardan perfectamente, por eso lo tengo descartado, el tema es que no redirige.
Tendrá algo que ver la versión de PHP?

Saludos!


Título: Re: Error ante un submit
Publicado por: RevangelyonX en 25 Octubre 2012, 09:44 am
Hola

Prueba lo siguiente:
Cambia session_start() por

If (!isset($_SESSION)){
 session_start();
}

Y otra cosa que puedes hacer es agregar
die("aqui");

En cada linia desde arriba y vas alternando para ver en que momento deja de funcionar el script y nos dices.

Salu2