Sesiones
PHP Manual

session_set_save_handler

(PHP 4, PHP 5)

session_set_save_handler — Establece unas funciones para el almacenamiento de los datos de la sesión a nivel de usuario

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.

Note: 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.

Note: 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.

Example#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($fpfilesize($sess_file));
    return(
$sess_data);
  } else {
    return(
""); // Debe devolver "" aqu&iacute;.
  
}

}

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&Oacute;N - Necesitar&aacute; implementar alg&uacute;n     *
 * tipo de rutinas recolectoras de basura aqu&iacute; *
 ***********************************************/
function rb ($maxlifetime) {
  return 
true;
}

session_set_save_handler ("abrir""cerrar""leer""escribir""destruir""rb");

session_start();

// proceed to use sessions normally

?>


Sesiones
PHP Manual