session_set_save_handler

(PHP 4 )

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.

Megjegyzés: 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.

Megjegyzés: 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 állmoá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.

Példa 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

?>