Forum und email

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

void session_set_save_handler ( string $open, string $close, string $read, string $write, string $destroy, string $gc )

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($fpfilesize($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

?>