Descrizione
void
session_set_save_handler ( string open, string close, string read, string write, string destroy, string gc )
session_set_save_handler() imposta le funzioni di
archiviazione sessioni che sono usate per archiviare e riutilizzare
i dati associati a una sessione. Ciò non è molto utile
quando un altro metodo di archiviazione è preferito a quelli forniti
dalle sessioni PHP. i.e. L'archiviazione dei dati di sessione in un database locale.
Nota:
Dovete impostare l'opzione di configurazione
session.save_handler per
user nel vostro file php.ini perchè
session_set_save_handler() abbia effetto.
Nota:
L'handler "write" non viene eseguito fino a che l'output stream
non viene chiuso. In questo modo, l'output di espressioni di debugging
nell'hanlder "write" non si vedrà mai nel browser. Se l'output di debugging
è necessario, è consigliabile che l'output del debug venga scritto
in un file.
Il seguente esempio fornisce l'archiviazione di sessione
basata su file simile al solito gestore di salvataggio di sessioni PHP
files. Questo esempio potrebbe essere facilmente
esteso per coprire l'archiviazione in database usando il vostro sistema
database favorito con supporto PHP.
La funzione di lettura deve restituire sempre un valore stringa
perchè il save handler funzioni a dovere. Restituisce una stringa vuota
se non ci sono dati da leggere. I valori restituiti da altri handlers sono convertiti in
espressioni booleane. TRUE per successo, FALSE in caso di fallimento.
Esempio 1.
session_set_save_handler() esempio
<?php function open ($save_path, $session_name) { global $sess_save_path, $sess_session_name; $sess_save_path = $save_path; $sess_session_name = $session_name; return(true); }
function close() { return(true); }
function read ($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(""); // Deve restituire "" qui. }
}
function write ($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 destroy ($id) { global $sess_save_path, $sess_session_name; $sess_file = "$sess_save_path/sess_$id"; return(@unlink($sess_file)); }
/********************************************* * ATTENZIONE - Qui avete bisogno di implementare qualche * * sorta di routine per il cestinaggio. * *********************************************/ function gc ($maxlifetime) { return true; }
session_set_save_handler ("open", "close", "read", "write", "destroy", "gc");
session_start();
// proceed to use sessions normally
?>
|
|