Descripción
bool
session_set_save_handler ( string abrir, string cerrar, string leer, string escribir, string destruir, string gc )
session_set_save_handler() establece las
funciones que se utilizan a nivel de usuario para el
almacenamiento y recuperación de los datos asociados a
una sesión. Es lo más útil cuando se
prefiere utilizar otro método de almacenamiento distinto
del proporcionaddo por las sesiones de PHP. p.ej. Almacenar
los datos de la sesión en una base de datos local.
Devuelve TRUE si todo se
llevó a cabo correctamente, FALSE en caso
de fallo.
Nota:
Debe cambiar la opción
session.save_handler en la
configuración a user en su
archivo php.ini para que
session_set_save_handler() tenga efecto.
Nota:
El manejador "escribir" no se ejecuta hasta que se cierra la
salida. Por ello, la salida de las sentencias que coloquemos
en el manejador "escribir" para el depurado nunca será
enviadas al navegador. Si se necesita producir una salida para
el depurado, se sugiere que la salida se produzca en un archivo.
El siguiente ejemplo proporciona almacenamiento de las sesiones
basado en archivos de forma similar al manejador de sesiones
por defecto de PHP files. Este ejemplo
puede ser extendido fácilmente para cubrir el almacenamiento
en bases de datos usando su motor de soporte de bases de datos
de PHP favorito.
La función de lectura debe devolver siempre una cadena
para que el manejador de escritura funcione como se espera.
Devuelva una cadena vacía si no hay ningún dato
a leer. Los valores devueltos de otros manejadores son
convertidos a una expresión booleana. TRUE si todo ha
ido correctamente, FALSE si ha habido algún problema.
Ejemplo 1.
Ejemplo de session_set_save_handler()
<?php function abrir ($save_path, $session_name) { global $sess_save_path, $sess_session_name; $sess_save_path = $save_path; $sess_session_name = $session_name; return(true); }
function cerrar() { return(true); }
function leer ($id) { global $sess_save_path, $sess_session_name;
$sess_file = "$sess_save_path/sess_$id"; if ($fp = @fopen($sess_file, "r")) { $sess_data = fread($fp, filesize($sess_file)); return($sess_data); } else { return(""); // Debe devolver "" aquí. }
}
function escribir ($id, $sess_data) { global $sess_save_path, $sess_session_name;
$sess_file = "$sess_save_path/sess_$id"; if ($fp = @fopen($sess_file, "w")) { return(fwrite($fp, $sess_data)); } else { return(false); }
}
function destruir ($id) { global $sess_save_path, $sess_session_name; $sess_file = "$sess_save_path/sess_$id"; return(@unlink($sess_file)); }
/*********************************************** * ATENCIÓN - Necesitará implementar algún * * tipo de rutinas recolectoras de basura aquí * ***********************************************/ function rb ($maxlifetime) { return true; }
session_set_save_handler ("abrir", "cerrar", "leer", "escribir", "destruir", "rb");
session_start();
// proceed to use sessions normally
?>
|
|