session_set_save_handler
(PHP 4, PHP 5)
session_set_save_handler — Felhasználói szintű munkamenet tároló függvényeket állÃt be
LeÃrás
A session_set_save_handler() beállÃtja a programozó által PHP-ben megÃrt munkamenet tároló függvényeket. Ezeket használja majd a PHP a munkamenet adatainak tárolására és lekérdezésére. Ez a lehetÅ‘ség akkor hasznos, ha a PHP által kÃnált módszerek nem megfelelÅ‘ek. Másfajta tárolás lehetséges az adatok lokális adatbázisban történÅ‘ rögzÃtésével.
Note: A php.ini session.save_handler beállÃtását mindenképpen user értékre kell állÃtanod, hogy a session_set_save_handler() függvény hÃvásának legyen hatása.
Note: Az Ãrás kezelÅ‘ csak a PHP program kimenetének elküldése után hÃvódik meg. Ezért az Ãrás kezelÅ‘ben a böngészÅ‘ számára kiÃrt, tipikusan hibakeresést szolgáló adatok nem lesznek sohasem láthatóak a böngészÅ‘ben. Ha a hibakereséshez adatok kiÃrása szükséges, javasolt napló állomány használata erre a célra.
Az alább látható példa állomány alapú munkamenet adat tárolást valósÃt meg, hasonlóan a PHP alapértelmezésű files kezelÅ‘jéhez. Ez a példa könnyen kiterjeszthetÅ‘ egy adatbázis tárolást alkalmazó kezelÅ‘vé, felhasználva a kedvenc adatbáziskezelÅ‘d függvényeit.
Az olvasó függvénynek mindig karaktersorozattal kell visszatérnie, hogy a mentést végzÅ‘ kezelÅ‘ helyesen működjön. Üres karaktersorozattal kell visszatérni, ha nincs adat, amit olvasni lehetne. Más kezelÅ‘k visszatérési értékei logikai tÃpusúvá alakulnak. Igaz értéket kell visszaadni siker estén, hamisat hiba esetén.
Example#1 session_set_save_handler() példa
<?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(""); // Itt mindenképpen "" a visszatérési érték.
}
}
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));
}
/*********************************************
* FIGYELEM - Itt mindenképpen meg kell *
* valósÃtani valamiféle szemétgyűjtést. *
*********************************************/
function gc ($maxlifetime) {
return true;
}
session_set_save_handler ("open", "close", "read", "write", "destroy", "gc");
session_start();
// Ezután hagyományosan használható a munkamenet
?>