(PHP 4, PHP 5)
session_set_save_handler — Imposta le funzioni di archiviazione sessioni a livello utente
$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
peruser
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.
Example #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
?>