En vez de desesperar, me las he ingeniado para realizar las operaciones que jace el session_start() a lo basto, leyendo directamente las sesiones desde disco y extrayendo los datos que necesitaba.
Aquí tenéis un ejemplo. Sed buenos, que os estoy vigilando ;)
El primer paso es recibir el session_id() bueno de la sesión que tengamos iniciada (suponemos que en algún momento hemos hecho un session_start() con éxito. Si no, mal vamos).
El session_id se puede obtener llamando a la función session_id() después de un session_start() o mediante la lectura de la cookie PHPSESSID mediante $_COOKIE['PHPSESSID']. En el ejemplo se puede pasar el is mediante el parámetro "sid" de la página o mediante la cookie.
// Obtiene el session_id $sid = $_REQUEST['sid']; if(!$sid) $sid = $_COOKIE['PHPSESSID']; if(!$sid) die "Necesito un identificador de sesión!!!";
Ahora calculamos el nombre del fichero donde se almacena la sesión
// Lee los IDs desde los ficheros de la sesión $fname = session_save_path() . "/sess_" . $sid; $txt = file_get_contents($fname);
Los ficheros son ficheros de texto con cada variable expresada sefún el formato
variable|tipo:longitud:"valor";Así, vamos a leer el valor de las variables usando expresiones regulares
variable es el nombre de la variable
tipo es un carácter que indica el tipo de datos. por ejemplo las cadenas son la letra 's'
longitud es el número de caracteres del valor
valor es el valor de la variable de sesión
$res = preg_match('/variable\|s\:\d*\:\"(\d+)\";/i', $txt, $data); if($res) $valor = $data[1];
No hay comentarios:
Publicar un comentario