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:
<?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!
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
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.
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
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:
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.
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'])){
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!
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