Foros del Web » Programando para Internet » PHP »

Pierdo la sesion al irme a otra pagina mediante un header.

Estas en el tema de Pierdo la sesion al irme a otra pagina mediante un header. en el foro de PHP en Foros del Web. Que tal gente, en una pagina creo una sesion: Código: ... $id_usr_creado = mysql_insert_id(); session_name('temp'); session_start(); $_SESSION['temp'] = $id_usr_creado; header("Location: alta.php$alta$nombre_var_get$con_error"); ... Luego en otra ...
  #1 (permalink)  
Antiguo 14/09/2008, 17:52
 
Fecha de Ingreso: marzo-2007
Mensajes: 340
Antigüedad: 17 años, 1 mes
Puntos: 4
Pierdo la sesion al irme a otra pagina mediante un header.

Que tal gente, en una pagina creo una sesion:

Código:
...
$id_usr_creado = mysql_insert_id();
session_name('temp');
session_start();
$_SESSION['temp'] = $id_usr_creado;
header("Location: alta.php$alta$nombre_var_get$con_error");
...
Luego en otra pagina cuando voy a recojerla en la primer linea detecto que no arroja ningun valor:

Código:
session_name('temp');
session_start();
echo $_SESSION['temp'];
Ya me cercione de comprobar que en el primer archivo la variable contenga un valor haciendo un echo antes del header y comentando este, y afirmativo, mi sesion contiene un valor, pero cuando la quiero recojer en el segundo archivo la misma se encuentra vacia !!! es realmente raro, ya que funcionaba bien, pero ahora no quiere saber nada !!!

Muchas gracias.
  #2 (permalink)  
Antiguo 14/09/2008, 19:39
okram
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Pierdo la sesion al irme a otra pagina mediante un header.

Imprime el id de sesión en ambas páginas y verifica que sea el mismo. Si lo es, intenta hacer un var_dump de la matriz $_SESSION en ambas páginas:

Código php:
Ver original
  1. echo session_id();
  2.  
  3. // o
  4.  
  5. echo '<pre>';
  6. var_dump($_SESSION);
  7. echo '</pre>';

  #3 (permalink)  
Antiguo 14/09/2008, 19:48
Avatar de ElJavista
Colaborador
 
Fecha de Ingreso: marzo-2007
Ubicación: Lima Perú
Mensajes: 2.231
Antigüedad: 17 años, 1 mes
Puntos: 67
Respuesta: Pierdo la sesion al irme a otra pagina mediante un header.

Cita:
Iniciado por WebDeveloperZ Ver Mensaje
Que tal gente, en una pagina creo una sesion:

Código:
...
$id_usr_creado = mysql_insert_id();
session_name('temp');
session_start();
$_SESSION['temp'] = $id_usr_creado;
header("Location: alta.php$alta$nombre_var_get$con_error");
...
Luego en otra pagina cuando voy a recojerla en la primer linea detecto que no arroja ningun valor:

Código:
session_name('temp');
session_start();
echo $_SESSION['temp'];
Ya me cercione de comprobar que en el primer archivo la variable contenga un valor haciendo un echo antes del header y comentando este, y afirmativo, mi sesion contiene un valor, pero cuando la quiero recojer en el segundo archivo la misma se encuentra vacia !!! es realmente raro, ya que funcionaba bien, pero ahora no quiere saber nada !!!

Muchas gracias.

Que cosa tan grave! debes poner session_start(); antes de cualquier cosa.
  #4 (permalink)  
Antiguo 14/09/2008, 20:01
okram
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Pierdo la sesion al irme a otra pagina mediante un header.

Cita:
Iniciado por ElJavista Ver Mensaje
Que cosa tan grave! debes poner session_start(); antes de cualquier cosa.
No necesariamente. Antes de session_start() puede ir la cantidad de código que desees, siempre y cuando no genere salidas al cliente (navegador): Texto, cookies, headers, etc.
  #5 (permalink)  
Antiguo 14/09/2008, 20:05
Avatar de ElJavista
Colaborador
 
Fecha de Ingreso: marzo-2007
Ubicación: Lima Perú
Mensajes: 2.231
Antigüedad: 17 años, 1 mes
Puntos: 67
Respuesta: Pierdo la sesion al irme a otra pagina mediante un header.

Tienes razón, me estaba confundiendo con header, sorry.
  #6 (permalink)  
Antiguo 14/09/2008, 21:06
 
Fecha de Ingreso: marzo-2007
Mensajes: 340
Antigüedad: 17 años, 1 mes
Puntos: 4
Respuesta: Pierdo la sesion al irme a otra pagina mediante un header.

Cita:
Imprime el id de sesión en ambas páginas y verifica que sea el mismo. Si lo es, intenta hacer un var_dump de la matriz $_SESSION en ambas páginas:
No es el mismo, y no entiendo porque, antes de crear la sesion en la primer pagina le agregue lo siguiente :

Código:
function terminar_sesion($sesion)
{
	session_name($sesion);
	session_start();
	session_unset();
	session_destroy;
}

terminar_sesion('temp');
Alguna idea ?
  #7 (permalink)  
Antiguo 14/09/2008, 21:09
 
Fecha de Ingreso: marzo-2007
Mensajes: 340
Antigüedad: 17 años, 1 mes
Puntos: 4
Respuesta: Pierdo la sesion al irme a otra pagina mediante un header.

Este es el primer echo que obtengo por ej:

39
93329b43517931e4168871ec3dda737c
array(1) { ["temp"]=> int(39) }

y en la segunda pagina:

70bb3543d4d114505bd10f07278844e0
array(0) { }
  #8 (permalink)  
Antiguo 14/09/2008, 21:22
okram
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Pierdo la sesion al irme a otra pagina mediante un header.

Es necesario que destruyas la sesión previamente?

Prueba destruyendo la sesión en una página X aparte, y luego dirigirte a otra página Y donde creas la nueva sesión y asignas el valor a tu variable de sesión.

Saludos,
  #9 (permalink)  
Antiguo 14/09/2008, 21:39
 
Fecha de Ingreso: marzo-2007
Mensajes: 340
Antigüedad: 17 años, 1 mes
Puntos: 4
Respuesta: Pierdo la sesion al irme a otra pagina mediante un header.

No la destruia, ese codigo lo agregue solo para asegurarme que la variable este limpia cuando le asigno el dato.
  #10 (permalink)  
Antiguo 14/09/2008, 21:48
okram
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Pierdo la sesion al irme a otra pagina mediante un header.

Todo indica que es un problema en la propagación de tus cookies. Usa session_get_cookie_params() para ver cómo está configurada la cookie que genera la sesión.

Saludos,
  #11 (permalink)  
Antiguo 14/09/2008, 22:07
 
Fecha de Ingreso: marzo-2007
Mensajes: 340
Antigüedad: 17 años, 1 mes
Puntos: 4
Respuesta: Pierdo la sesion al irme a otra pagina mediante un header.

Les comento, resulta que en la cabesera del archivo 1 tengo los siguientes parametros:

Código:
session_name('usuario');
session_start();
$idusr = $_SESSION['usuario'][1];
El punto, es que esto logicamente no incide en el problema que estoy comentando ya que para entrar en la construccion que especifique al comienso de este topic es necesario que dicha sesion ( $_SESSION['usuario'] ) sea nula.

Código:
...
$id_usr_creado = mysql_insert_id();
session_name('temp');
session_start();
$_SESSION['temp'] = $id_usr_creado;
header("Location: alta.php$alta$nombre_var_get$con_error");
...
Pero adivinen que, si en la segunda pagina hago un echo $_SESSION['usuario'] la misma muestra el valor de $_SESSION['temp'] que fue creada en la primer pagina !!! y lo mejor de todo esto es que en la segunda pagina no existe ninguna linea de codigo que involucre a $_SESSION['usuario'], incluso cree un archivo con solo los siguientes parametros para probar:

Código:
session_name('usuario');
session_start();
echo $_SESSION['usuario'];
echo "<br>";
echo session_id();
echo "<br>";
var_dump($_SESSION);
el cual devuelve lo siguiente:

93329b43517931e4168871ec3dda737c
array(1) { ["temp"]=> int(43) }

Como ven el nombre es temp !!!! que merda pasa aca !!!

Bueno, despues de haber visto este problema dije, limpiemos $_SESSION['usuario'] antes de crear $_SESSION['temp'] por las moscas, entonoces el codigo de la 1 pag quedo asi:

Código:
$id_usr_creado = mysql_insert_id();
terminar_sesion('usuario');
terminar_sesion('temp');
session_name('temp');
session_start();
$_SESSION['temp'] = $id_usr_creado;
header("Location: alta.php$alta$nombre_var_get$con_error");
SIn embargo no pude resolver nada ... esto es mas raro que la miercole ...

Última edición por WebDeveloperZ; 14/09/2008 a las 22:18
  #12 (permalink)  
Antiguo 14/09/2008, 22:27
 
Fecha de Ingreso: marzo-2007
Mensajes: 340
Antigüedad: 17 años, 1 mes
Puntos: 4
Respuesta: Pierdo la sesion al irme a otra pagina mediante un header.

Bueno, parece que encontre el problema, yo pensaba que al usar session_name('usuario'); le decia a la variable como se llamaria, es decir $_SESSION['usuario'] pero parece que es para otra cosa no ???

ya que esto funciona bien:

Código:
session_name('usuario');
session_start();
echo $_SESSION['temp'];
echo "<br>";
echo session_id();
echo "<br>";
var_dump($_SESSION);
  #13 (permalink)  
Antiguo 14/09/2008, 22:31
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Pierdo la sesion al irme a otra pagina mediante un header.

Al parecer no puedes pasar el identificador por tus cookies, prueba anexar el session id cuando haces el header:
Código php:
Ver original
  1. header("Location: archivo.php?" . SID );

Saludos.
  #14 (permalink)  
Antiguo 14/09/2008, 22:31
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Pierdo la sesion al irme a otra pagina mediante un header.

Session_name sirve para darle un nombre a tu sesión por si usas una aplicación que requiera mantener los datos de sesión separados.

Saludos.
  #15 (permalink)  
Antiguo 14/09/2008, 23:00
Avatar de uselox  
Fecha de Ingreso: agosto-2008
Ubicación: Lima, Perú
Mensajes: 168
Antigüedad: 15 años, 7 meses
Puntos: 12
Bueno, envie el SID pero no pasa nada, queda en blanco:

archivo.php?

Una pregunta por cierto, si yo hiciera esto:

session_name('usuario');
session_start();
$_SESSION['usuario'] = 1;

session_name('algo');
session_start();
$_SESSION['algo'] = 2;

Tendria dos sesiones independientes cierto ?

En caso que hiciera esto:

session_name('usuario');
session_start();
$_SESSION['usuario'] = 1;
$_SESSION['algo'] = 2;

Tendria una sola sesion llamada usuario, la cual seria un array por contener 2 elementos, estoy en lo cierto ???

En caso de estar en lo cierto, la logica que aplico en mi codigo seria correcta, ya que yo nececito una sesion independiente para el dato temporal.

Que corchos le pasa que no anda entonces ???

Muchas gracias.

Alguien ?????

Alguien que me quite las dudas please !! muchas gracias !

Última edición por GatorV; 15/09/2008 a las 14:48
  #16 (permalink)  
Antiguo 15/09/2008, 14:47
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Pierdo la sesion al irme a otra pagina mediante un header.

Revisa el manual respecto a session_destroy: http://www.php.net/session_destroy tu problema viene en que no estas aplicando bien los conceptos de como trabajar la sesión.

Saludos.
  #17 (permalink)  
Antiguo 15/09/2008, 15:11
 
Fecha de Ingreso: marzo-2007
Mensajes: 340
Antigüedad: 17 años, 1 mes
Puntos: 4
Respuesta: Pierdo la sesion al irme a otra pagina mediante un header.

que tal gator, mirando los ejemplos no entiendo sinceramente que estoy haciendo mal ya que es el mismo codigo que yo e usado. disculpame si no me doy cuenta
  #18 (permalink)  
Antiguo 15/09/2008, 15:12
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Pierdo la sesion al irme a otra pagina mediante un header.

No entiendo tu necesidad de usar 2 sesiones diferentes, tu puedes agregar los datos que quieras al arreglo $_SESSION y estos se respetan puedes usar perfectamente $_SESSION['usuario'] y $_SESSION['temp'] ambos trabajando sobre la misma sesion.

Saludos.
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 17:44.