Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] El header hace lo que quiere y bloque la página junto a sesiones

Estas en el tema de El header hace lo que quiere y bloque la página junto a sesiones en el foro de PHP en Foros del Web. El problema que me surge es algo que nunca me ha pasado en varios años usando PHP con las variables de session y headers, aunque ...
  #1 (permalink)  
Antiguo 29/04/2013, 15:56
 
Fecha de Ingreso: septiembre-2008
Ubicación: Valencia
Mensajes: 160
Antigüedad: 15 años, 7 meses
Puntos: 2
El header hace lo que quiere y bloque la página junto a sesiones

El problema que me surge es algo que nunca me ha pasado en varios años usando PHP con las variables de session y headers, aunque la verdad es que las variables session las uso poco.

En un principio tenia el sistema de autenticaciones sin sesiones, y los headers iban perfectamente, pero desde que he implementado sesiones al acceder a base de datos para hacer comparaciones o cambios suceden cosas extrañas, en ciertos puntos si es erroneo debería mostrar un mensaje que diga el error, lo hago mandando con un header una variable por GET que diga que ha fallado, y hasta ahí bien, si no fuese porqué el header se activa en caso de que sea uno solo en toda la página, pero al volver a la otra devuelve error como si la página no existiese, cosa que antes no pasaba, o si la muestra es como si no recibiese la variable. En el caso de que en las dos páginas haya variables sission da que no existe la página hasta que borro historial, y si no hay variable session no muestra nada, como si el GET no se activase.

Y otro problema similar me surge cuando al hacer varias comparaciones quiero que si la primera ya es erronea active el header con el mensaje de error, pero este se lo salta olimpicamente y siempre muestra el último header de la página al que pueda entrar, y si todo es correcto que puedo actualizar los datos de la BD los actualiza pero me vuelve a mostrar que la página no existe si cambio de página.

Es algo que me está volviendo loco, en un principio pensé que era por no cerrar la base de datos antes del header, pero lo cambié y sigo en las mismas.

La verdad es que estoy teniendo bastantes problemas últimamente con el servidor en tema de bios, lo digo por si tuviese algo que ver.

Gracias por las molestias y la ayuda por adelantado.
  #2 (permalink)  
Antiguo 29/04/2013, 16:23
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: El header hace lo que quiere y bloque la página junto a sesiones

Sin ver tu código, te comento sólo unos pasos básicos:

1- Al usar sesiones, siempre debes tener session_start(); independientemente de que se trate de un usuario autentificado o un invitado.

2- No debes enviar contenido al navegador (espacios, saltos de línea, etiquetas html... en resumen, NADA) antes de session_tart(), header(), set_cookie() y alguna otra función que se me esté olvidando, porque envían encabezados al navegador y éste no podrá reconocerlos como tales si hay un contenido previo.
__________________
- León, Guanajuato
- GV-Foto
  #3 (permalink)  
Antiguo 30/04/2013, 10:32
 
Fecha de Ingreso: septiembre-2008
Ubicación: Valencia
Mensajes: 160
Antigüedad: 15 años, 7 meses
Puntos: 2
Respuesta: El header hace lo que quiere y bloque la página junto a sesiones

Lo de los session_start lo tengo, y todo va perfectamente mientras no tenga que hacer consulta a las BD en las que en algún momento necesite la variable sesión para comprobantes.

¿Cual es el problema de usar headers en los que en la url haya un dato de variable para enviar?

Por ejemplo este es parte del código que no se ejecuta como debe.

Código PHP:
Ver original
  1. mysql_select_db($bd_base, $con);
  2.         $resultado= mysql_query("SELECT * FROM Usuarios WHERE (User='$AN') ",$con);
  3.         $row = mysql_fetch_assoc($resultado);
  4.         $CANP = $row['Pass'];
  5.         $AC = $row['Correo'];
  6.        
  7.         $ANP = md5($ANP);
  8.        
  9.         mysql_query("Update Usuarios Set Nombre ='$Nom',Apellido ='$A1',Apellido2 ='$A2' Where User='$AN'",$con);
  10.        
  11.         if($NP != '' && $NPR != '')
  12.         {
  13.             if($CANP == $ANP && $NP == $NPR )
  14.             {
  15.                 $NP = md5($NP);
  16.                 mysql_query("Update Usuarios Set Pass ='$NP' Where User='$AN'",$con);
  17.             }else{
  18.                 mysql_close();
  19.                 header("Location:Menu.php?Us=$AN&NC=1");
  20.             }
  21.         }
Se que entra dentro del elese lo tengo comprobado y que hace el close, pero el header no seactiva, salta al if de la siguiente comprovación que hay abajo, y al final el único header que se activa es el que hay al final de la hoja en el que mando que todo va correcto si no a entrado en los else.

¿Si quiero interrumpir la ejecución del script y que redirija automaticamente en ese punto que comando debo usar como alternativa al header?

He hecho modificaciónes de modo que ya no dice que la página no existe, está arreglado lo de las sesiones, pero sigue saltandose los headers.

Gracias Triby por tu respuesta, tendré todo eso encuenta para mis códigos, son cosas que no sabía ni nunca había leido sobre ello. La verdad es que cookies y sessiones no suelo trabajar con ellas y menos junto a headers, así que todo problema es nuevo para mi y no pillo soluciones optimas sin tener que prescindir de ese tipo de varibales.

¿Debería ponner las comprovaciones antes y al final los headers así como las modificaciones y no hacer comrovación ejecución?

Última edición por Oracles; 30/04/2013 a las 10:50
  #4 (permalink)  
Antiguo 30/04/2013, 11:42
 
Fecha de Ingreso: abril-2008
Ubicación: El Salvador
Mensajes: 736
Antigüedad: 16 años
Puntos: 47
Respuesta: El header hace lo que quiere y bloque la página junto a sesiones

mmm mira prueba poniendo tu hedader asi

Código PHP:
Ver original
  1. header("Location:Menu.php?Us=".$AN."&NC=1");
  2. exit();
  #5 (permalink)  
Antiguo 30/04/2013, 16:34
 
Fecha de Ingreso: septiembre-2008
Ubicación: Valencia
Mensajes: 160
Antigüedad: 15 años, 7 meses
Puntos: 2
Respuesta: El header hace lo que quiere y bloque la página junto a sesiones

Gracias, simplemente con lo del exit() me ha solucionado el problema, y el eliminar sesiones y luego crearlas de nuevo con los nuevos valores en el caso de cambiar el nombre de usuario y de las contraseñas. Gracias alex1084.

Etiquetas: header, junto, página, sesiones, variables
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:53.