Foros del Web » Programando para Internet » PHP »

Pierdo variables de sesion

Estas en el tema de Pierdo variables de sesion en el foro de PHP en Foros del Web. En la aplicación de comercio electrónico que estoy haciendo necesito crear una variable de sesion para mantener la identidad del usuario en cada momento. Al ...
  #1 (permalink)  
Antiguo 14/09/2004, 08:53
Avatar de Rosimaj  
Fecha de Ingreso: febrero-2003
Ubicación: Valencia
Mensajes: 61
Antigüedad: 14 años, 10 meses
Puntos: 0
Pierdo variables de sesion

En la aplicación de comercio electrónico que estoy haciendo necesito crear una variable de sesion para mantener la identidad del usuario en cada momento.
Al cargarse la página hago
session_start();
despues intento coger la variable de sesion que he registrado en la página principal. La intento coger con:
$HTTP_SESSION_VARS['VARIABLE']. A veces funciona y otras no, y no entiendo porque. Alguien me puede dar una solución.

Gracias
  #2 (permalink)  
Antiguo 14/09/2004, 09:04
Avatar de Reynier  
Fecha de Ingreso: noviembre-2002
Ubicación: Por ahí en algún sitio
Mensajes: 1.844
Antigüedad: 15 años
Puntos: 1
Hummm ...

Has comprobado ya si esa variable que tratas de mostrar contiene algún valor? Donde le asignas algo a esta variable? Prueba a hacer esto y verás:
Código PHP:
 session_start();
 
$_SESSION['variable'] = "varsess";
 echo 
$_SESSION['variable']; 
Salu2
__________________
Ing. Reynier Pérez Mira
  #3 (permalink)  
Antiguo 14/09/2004, 09:10
Avatar de Rosimaj  
Fecha de Ingreso: febrero-2003
Ubicación: Valencia
Mensajes: 61
Antigüedad: 14 años, 10 meses
Puntos: 0
nada mas asignar el valor a la variable de sesión, hago un ECHO y veo que el valor se ha asociado correctamente
En las páginas en las que he de acceder al valor de esta variable y que veo que me fallan, hago de nuevo un ECHO y no me muestra ningún valor, pero eso ocurre solo a veces. Si realizo una autentificación del usuario, actualizo el valor de la variable de sesión, y ese valor si que me aparece en esas páginas en que antes me fallaba

No entiendo que puede ser lo que falla
  #4 (permalink)  
Antiguo 14/09/2004, 09:38
Avatar de Rosimaj  
Fecha de Ingreso: febrero-2003
Ubicación: Valencia
Mensajes: 61
Antigüedad: 14 años, 10 meses
Puntos: 0
Creo que el problema puede ser que al crear la variable le doy un valor numerico aleatorio, utilizando la funcion rand:

session_start();
session_register('valid_user');
$numero_aleatorio=rand(0,1000);
$HTTP_SESSION_VARS['valid_user']=$numero_aleatorio;

Ya que posteriormente modifico el valor de $HTTP_SESSION_VARS['valid_user'] tomando como valor el contenido de un campo de texto de un formulario, y en ese caso, en las páginas en las que accedo al valor de $HTTP_SESSION_VARS['valid_user'] no me da ningun problema, en cambio, dejando el valor inicial de esta variable de sesion, me sale que no tiene ningun valor

esto es muy raro
  #5 (permalink)  
Antiguo 15/09/2004, 20:27
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Cita:
nada mas asignar el valor a la variable de sesión, hago un ECHO y veo que el valor se ha asociado correctamente
En principio .. el valor de una variable de sesión (e incluso aplicable a cookies) no queda registrado hasta la próxima petición al servidor (de una página) .. sea por un cambio de script (redireccionamiento) ... o que pasas de un script a otro por un link .. por un formulario HTML .. etc.


Cita:
session_start();
session_register('valid_user');
$numero_aleatorio=rand(0,1000);
$HTTP_SESSION_VARS['valid_user']=$numero_aleatorio;
Todo eso no es correcto .. Debes usar los arrays superglobales $_SESSION (si usas PHP 4.1.0 o superior) . y si usas una versión inferior .. para registrar el valor de una variable de sesión se hace con session_register() donde indicas el Nombre de la variable y posteriormente le asignas un valor cualquiera que luego puedes obtener iniciando el uso de sesiones con session_start() y accediendo al array $HTTP_SESSION_VARS .. pero lo recomendable es -sólo- usar los arrays superglobales $_SESSION y no mezclar métodos de registros de variables en sesiones (pues hay dos). En esta FAQ se comenta un ejemplo básico para ambos casos:

http://www.forosdelweb.com/showthrea...998#post238998

Por lo demás .. el hecho de que puedas o no tomar (recuperar) el valor de una variable de sesión que en algún script creas (registras) .. depende directamente de que se propague el SID (Identificador único de sesión).

La propagación del SID se puede hacer por cookies o por el URL .. y eso lo define la configuración de PHP que tengas (php.ini directivas: session.use_trans_sid .. session.use_cookies). Si propagas el SID en cookies esto implicará a su vez que tu navegador de pruebas acepte cookies. Debes conocer como tu configuración está propagando el SID para adaptar tu programación (si corresponde: propagar a mano el SID en tus links y demás redireccionamientos).

A todo esto .. no se vé como pasas de un script a otro (página) del que crea la variable de sesión al que intentas leerla. Debe ser por un link desde la página1 a la siguiente .. o redireccionamiento . o formulario HTML que envias a llamar a otro script (en el "action" del form ..). Será en ese "link" donde PHP propagará (insertará) el SID o lo hará en una cookie o lo tendrás que hacer tu a mano.

Puedes leer más sobre el SID en www.php.net/session o usando el buscador del foro (por mi parte he hablado mucho sobre ese tema).

Un saludo,
  #6 (permalink)  
Antiguo 16/09/2004, 03:22
Avatar de Rosimaj  
Fecha de Ingreso: febrero-2003
Ubicación: Valencia
Mensajes: 61
Antigüedad: 14 años, 10 meses
Puntos: 0
Hola a [email protected], gracias por intentar ayudarme. Ayer por fin consegui que esto funcionara.
El problema era que por lo visto en alguna de las páginas no tenia session_start() al principio del documento.

Gracias
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 02:02.