Error ante un submit

Iniciado por Zinc, 24 Octubre 2012, 05:35 AM

0 Miembros y 1 Visitante están viendo este tema.

Zinc

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 (php) [Seleccionar]
<?php
session_start
();
include(
"clases/Empresa.php");
include(
"script_validaciones.php");
$Empresa = new Empresa;

if (
$Empresa->conexion){
if(isset(
$_POST['submit'])){
$campos[0] =  $_POST["direccion"];
$campos[1] = $_POST["telefono"];
$campos[2] = $_POST["persona"];
$campos[3] = $_POST["id"];
$campos[4] = $_SESSION['UsuarioActual'];
$campos[5] = $_POST['nombre'];
if(validarFormulario($campos)){

if ($Empresa->ActualizarEmpresa($campos) or die(mysql_error())) {
header("location: http://www.google.com.ar");
};
};

--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!

RevangelyonX

Hola,

Posiblemente no hayas acabado de ponernos todo el código porque te falta cerrar:
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


Just Linux
OSCP certified

Zinc

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.

apuromafo CLS

#3
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

    <?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
    <?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

Zinc

#4
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 (php) [Seleccionar]
if ($Empresa->conexion){
if(isset($_POST['submit'])){
header("location: http://www.google.com.ar");
$campos[0] =  $_POST["direccion"];
$campos[1] = $_POST["telefono"];
$campos[2] = $_POST["persona"];
$campos[3] = $_POST["id"];
$campos[4] = $_SESSION['UsuarioActual'];
$campos[5] = $_POST['nombre'];
if(validarFormulario($campos)){

if ($Empresa->ActualizarEmpresa($campos) or die(mysql_error())) {
header("location: http://www.google.com.ar");
};
};
}

}


Y...nada.

apuromafo CLS

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'])){

Zinc

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!

RevangelyonX

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
Just Linux
OSCP certified