Foros del Web » Programando para Internet » PHP »

session se pierde

Estas en el tema de session se pierde en el foro de PHP en Foros del Web. Alguien puede decirme por favor, que es lo que pasa con esta session que se pierde. ingreso a la pagina server/test.php?b=1 codigo: <?php $b=$HTTP_GET_VARS[b]; switch ...
  #1 (permalink)  
Antiguo 21/03/2006, 13:54
Avatar de moron  
Fecha de Ingreso: mayo-2004
Mensajes: 971
Antigüedad: 13 años, 7 meses
Puntos: 2
session se pierde

Alguien puede decirme por favor, que es lo que pasa con esta session que se pierde.

ingreso a la pagina server/test.php?b=1

codigo:
<?php

$b=$HTTP_GET_VARS[b];


switch ($b){
case 1:
session_start();
session_register('a');
$_SESSION['a']=true;

echo $_SESSION['a']; /aca imprime bien en pantalla

echo '<a href="TEST.PHP?b=2">Probar sesion</a>';
break;

case 2:

echo $_SESSION['a']; //esta no la imprime
break;
}
?>

muchas gracias desde ya.

saludos
  #2 (permalink)  
Antiguo 21/03/2006, 15:03
Avatar de bistoco  
Fecha de Ingreso: marzo-2006
Mensajes: 141
Antigüedad: 11 años, 9 meses
Puntos: 0
session_start() va antes ke cualkier otra sentencia del script , puede ke eso sea
  #3 (permalink)  
Antiguo 21/03/2006, 15:08
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
No uses session_register() en combinación con $_SESSION .. Usa sólo $_SESSION (el array superglobal).

Por otro lado .. el "session_start()" debes usarlo en todos los "case" o mejor en el principio de ese script .. Es necesario para pretender no sólo dar valor a una variable de sesión sino para acceder a sus valores también.

Luego ya vendrán otros problemas .. por ejemplo referentes a la propagación del SID .. Te recomiendo ver las FAQ's de este foro (hay algunas sobre sesiones) y la documentación generar sobre sesiones de PHP en:

www.php.net/session.

Otro detalle (esto es "teoría" de sesiones .. pero es necesario conocerlas !!!!):

session_register('a');
$_SESSION['a']=true;

echo $_SESSION['a']; /aca imprime bien en pantalla

Así tal cual lo haces no puedes obtener el valor de la sesión (el real, el que contiene la sesión en el "servidor") .. sólo estás viendo a $_SESSION y su valor (de uno de sus indices) como un simple "array". Los valores de una variable de sesión (aplicable a una cookie ya puestos a ver teoría), sólo son accesibles o dicho de otra forma "reales" en la próxima iteracción con el servior, ya sea una recarga de página .. o un link que llama a otro script .. etc.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #4 (permalink)  
Antiguo 22/03/2006, 06:26
Avatar de moron  
Fecha de Ingreso: mayo-2004
Mensajes: 971
Antigüedad: 13 años, 7 meses
Puntos: 2
Muchicimas gracias por las respuestas.
Cluster, hablas de utilizar el sid en lugar de la posición del array de session?
Voy a documentarme mas al respecto.
saludos.
  #5 (permalink)  
Antiguo 22/03/2006, 06:40
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Cita:
Iniciado por moron
Muchicimas gracias por las respuestas.
Cluster, hablas de utilizar el sid en lugar de la posición del array de session?
Voy a documentarme mas al respecto.
saludos.
No, .. el SID es un "concepto" .. es la forma por la cual PHP hace la "mágia" de que en una sesión activa puedas seguir accediendo y definiendo variables en esa misma sesión.

Si tu no has escuchado sobre el SID .. o en el uso de sesiones que muchas veces ves en ejemplos no se vé por ningún lado el famoso "SID" no es por qué "no exista" sino por la forma de propagación de este y que PHP puede (y de hecho hace) automáticamente por "tí" en su configuración. Por ejemplo si lo hace por "cookies (PHP crea una cookie con el SID automáticamente) .. para tu programación el uso de sesiones es de lo más "transparente" (no veras nunca el SID por ningún lado ni tendras que usarlo expresamente en tus links, formularios y redireccionamientos en general.

Pero .. si ese "SID" no se puede propagar: por ejemplo por dejar que PHP cree una cookie para tal fin pero por otro lado: configuración de tu navegador, proxy, anti-virus .. etc la "bloquea" .. el SID no se propaga y las sesiones no funcionan .. Lo peor es que en estos cosos por desconocimiento del concepto del "SID" uno no sabe por qué no fucionan las sesiones.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
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 08:47.