Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Va de sesiones y header()

Estas en el tema de Va de sesiones y header() en el foro de PHP en Foros del Web. Buenas!! Mirad, os expongo mi problema. Estoy haciendo el proyecto fin de carrera (una web php mas o menos), y estoy teniendo problemas al usar ...
  #1 (permalink)  
Antiguo 09/11/2010, 11:04
 
Fecha de Ingreso: noviembre-2010
Ubicación: laudio
Mensajes: 61
Antigüedad: 14 años
Puntos: 1
Pregunta Va de sesiones y header()

Buenas!!

Mirad, os expongo mi problema. Estoy haciendo el proyecto fin de carrera (una web php mas o menos), y estoy teniendo problemas al usar la funcion header() junto con las sesiones.

La cosa es que suelo guardar informacion en la tabla $_SESSION, para mostrar o no cierta informacion al usuario o invitado. Estoy usando la funcion header() para redireccionar desde un php a otro, por ejemplo, una vez que se comprueban los datos de identificacion, pasar al menu principal o volver al índice. Mi problema esta en que cada vez que llamo a header() la sesion se destruye (o algo asi, como que la tabla $_SESSION deja de estar disponible en la página a la que se redirecciona).

He estado buscando un buen rato por la API de php, comentarios de gente, posibles soluciones... Y lo "único" que he podido sacar es que la gente suele usar la funcion session_write_close() antes de llamar a header(), para escribir los datos de esa tabla (pero a dónde? [1]). He probado a llamar a session_start() en la pagina a la que me lleva header(), pero la tabla $_SESSION no vuelve a tener la informacion de antes.

Mi pregunta es (aparte de la [1]), ¿cómo se las puede uno ingeniar para usar header() y sesiones a la vez, si no usariais la función header() (y/o existe otra alternativa), para resolver mi problema?

Espero que me entiendan amigos :D.

Un saludo y ojalá me pudierais ayudar, ya que estoy atascado en este punto. Muchas graciasss


Russellhoff
  #2 (permalink)  
Antiguo 10/11/2010, 04:41
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años, 6 meses
Puntos: 1517
Respuesta: Va de sesiones y header()

No veo necesidad de usar session_write_close. Lo más probable es que o no estás llamando en la página donde quieres usar las sesiones session_start o en la página donde está el header la destruyes usando algo como session_destroy o session_unset. Pero prueba algo sencillo como esto y dime si se ve
a.php
Código PHP:
Ver original
  1. <?php
  2. $_SESSION['foo'] = 'foo';
  3. header('Location: b.php');
b.php
Código PHP:
Ver original
  1. <?php
  2. echo $_SESSION['foo'];
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #3 (permalink)  
Antiguo 10/11/2010, 09:03
 
Fecha de Ingreso: noviembre-2010
Ubicación: laudio
Mensajes: 61
Antigüedad: 14 años
Puntos: 1
Pregunta Respuesta: Va de sesiones y header()

Hola abimaelrc!!

He leido tu respuesta, y he probado lo que me has comentado:

Mi ruta donde tengo los ficheros a.php y b.php es //php (o sea, la misma carpeta por lo que no creo que fuese problema de escribir mal la ubicacion del destino en header()).

Luego el fichero a.php tiene:
Código PHP:
<?php

session_start
();

$_SESSION['foo'] = 'foo';

header('Location: b.php');
?>
Por otro lado, el fichero b.php tiene:
Código PHP:

<?php

session_start
();

echo 
$_SESSION['foo'];
?>
Luego escribo en la barra de direcciones la ubicacion de a.php y me da este error:

Código:
Notice: Undefined index: foo in /opt/lampp/htdocs/pfc/php/b.php on line 5
Mal rollo me da... Help please!!

Muchas gracias.
  #4 (permalink)  
Antiguo 10/11/2010, 09:08
 
Fecha de Ingreso: noviembre-2010
Ubicación: laudio
Mensajes: 61
Antigüedad: 14 años
Puntos: 1
Respuesta: Va de sesiones y header()

Por cierto, uso xampp. Podría ser que tengo algo mal configurado??
  #5 (permalink)  
Antiguo 10/11/2010, 09:35
 
Fecha de Ingreso: noviembre-2010
Ubicación: laudio
Mensajes: 61
Antigüedad: 14 años
Puntos: 1
Respuesta: Va de sesiones y header()

Hola de nuevo. He estado mirando el fichero de configuración de php (php.ini) y he visto que tenia activada la opción "session.use_trans_sid", a 1 obviamente. La he desactivado y ahora me escribe "foo". Así que igual ya esta solucionado el tema. Os comento en cuanto pueda tenerlo funcionando.

Pregunta: Qué hace exactamente esa función si esta habilitada (session.use_trans_sid)?

Y otra cosa mucho más importante. Como puedo ver, si con header llamo a b.php, en b.php (al principio) debo hacer una llamada a session_start(). Y digo yo: si alguien intenta acceder a esa pagina b.php directamente (tecleando en el explorador de inet //direcc//b.php) y yo quiero que antes tenga que pasar por a.php, qué hago??

Muchas gracias!
  #6 (permalink)  
Antiguo 10/11/2010, 09:59
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años, 6 meses
Puntos: 1517
Respuesta: Va de sesiones y header()

Se supone que por defecto está inhabilitada por cuestiones de seguridad. Si la tienes habilitada habrá sido que la activaste en algún momento.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #7 (permalink)  
Antiguo 10/11/2010, 10:17
 
Fecha de Ingreso: noviembre-2010
Ubicación: laudio
Mensajes: 61
Antigüedad: 14 años
Puntos: 1
Respuesta: Va de sesiones y header()

Correcto!! Muchas gracias x la ayuda, dedicacion y tiempo!!

Etiquetas: header, sesiones, session
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 14:43.