Ver Mensaje Individual
  #1 (permalink)  
Antiguo 17/04/2012, 09:41
Borsetto
 
Fecha de Ingreso: enero-2010
Mensajes: 69
Antigüedad: 14 años, 3 meses
Puntos: 0
Variables de sesión vacías (cookies deshabilitadas en navegador)

Hola a todos!

Después de leer las FAQ y millones de mensajes y tutoriales, soy incapaz de recuperar las variables de sesión. Obviamente, algo se me está escapando. Describo mi situación:

El contexto es el siguiente. En el php.ini, las opciones especificadas son las siguientes:

Código PHP:
session.save_handler files
session
.save_path "./sesiones"
session.use_cookies 
session
.use_only_cookies 0
session
.name PHPSESSID
session
.cookie_lifetime 0
session
.cookie_path = /
session.cookie_domain =
session.cookie_httponly 
session.serialize_handler php
session
.gc_probability 1
session
.gc_divisor 1000
session
.bug_compat_42 Off
session
.bug_compat_warn Off
session
.referer_check =
session.entropy_length 0
session
.entropy_file =
session.cache_expire 180
session
.use_trans_sid 1
session
.hash_function 0
session
.hash_bits_per_character 5
url_rewriter
.tags "a=href,area=href,frame=src,input=src,form=fakeentry" 
Y mis archivos de prueba son los siguientes (supongo que ya os sonarán):

Archivo "page1.php":

Código PHP:
session_name("prueba");
session_start();

echo 
'Welcome to page #1';

$_SESSION['favcolor'] = 'green';
$_SESSION['animal']   = 'cat';
$_SESSION['time']     = time();

// Works if session cookie was accepted
echo '<br /><a href="page2.php">page 2</a>';

// Or maybe pass along the session id, if needed
echo '<br /><a href="page2.php?' SID '">page 2</a>'
Archivo "page2.php":

Código PHP:

session_id
($_GET['prueba']);
session_start();



if (
defined('SID')){
   echo 
'Session is active<BR>';
}else{
   echo 
'Session is not started<BR>';
}


echo 
'<br>Welcome to page #2<br />';
echo 
$_SESSION['favcolor']."<BR>"// green
echo $_SESSION['animal']."<BR>";   // cat
echo $_SESSION['time']."<BR>";
print_r($_COOKIE);

// You may want to use SID here, like we did in page1.php
echo '<br /><a href="page1.php?'.SID.'">page 1</a>'
Mi objetivo es recuperar la sesión mediante cookies si el navegador las tiene habilitadas, o mediante el paso de la variable SID por URL en caso contrario. El primer caso está solucionado, es el segundo el que no.

Al pasar de "page1.php" a "page2.php", se envía correctamente la variable SID, y si echo un ojo al directorio "sesiones", especificado en el php.ini, veo que, en efecto, las variables de sesión 'favcolor', 'animal' y 'time' están correctamente almacenadas. Pero no encuentro la forma de recuperar sus valores.

He visto que los archivos de sesiones creados tienen la forma "sess_" + SID, no creo que haga falta abrir el archivo de la sesión y de ahí recuperar las variables, ¿o sí?

Asimismo, antes, en el php.ini, el valor de "use_only_cookies" estaba puesto a 1, supongo que en tal caso es imposible recuperar la sesión si no es por medio de las cookies, por lo que he puesto su valor a 0.

Os agradecería infinitamente que me echárais una mano, llevo con hoy tres días y no le encuentro el truco.

Muchísimas gracias de antemano