Una vez que ya sabemos dónde están los ficheros de sesión tal y como se ha visto en las entregas anteriores, podemos simular de forma idéntica a como hace PHP la carga de la información de la sesión en una matriz asociativa.
El primer paso es cargar los contenidos del fichero de la sesión.
$fname = session_save_path() . "/sess_" . $sid; $_session = unserializeSession( file_get_contents( $fname ) );
Y para ello, se usa la siguiente función. Si es que es demasiado fácil...
/////////////////////////////////////////////////////////////////////////////// /** * unserializeSession - Unserialize para ficheros de sesión * * Convierte una cadena que se corresponde con los contenidos de un fichero de sesión en un array * asociativo con las claves y valores de la sesión correspondiente. * * @access public * @link http://www.php.net/manual/en/function.session-decode.php#101687 * * @param string $data Cadena de texto del fichero de la sesión * @return array Array asociativa con las claves y valores */ function unserializeSession( &$data ) { if( strlen( $data) == 0) { return array(); } // match all the session keys and offsets preg_match_all('/(^|;|\})([a-zA-Z0-9_]+)\|/i', $data, $matchesarray, PREG_OFFSET_CAPTURE); $returnArray = array(); $lastOffset = null; $currentKey = ''; foreach ( $matchesarray[2] as $value ) { $offset = $value[1]; if(!is_null( $lastOffset)) { $valueText = substr($data, $lastOffset, $offset - $lastOffset ); $returnArray[$currentKey] = unserialize($valueText); } $currentKey = $value[0]; $lastOffset = $offset + strlen( $currentKey )+1; } $valueText = substr($data, $lastOffset ); $returnArray[$currentKey] = unserialize($valueText); return $returnArray; }
No hay comentarios:
Publicar un comentario