(PHP 4 >= 4.0.0)
session_set_save_handler --
Setzt benutzerdefinierte Session-Speicherfunktionen
Beschreibung
void session_set_save_handler
(string
öffnen, string
schließen, string
lesen, string
schreiben, string
löschen, string
gc)
session_set_save_handler() setzt die
benutzerdefinierten Session-Speicherfunktionen, die zur
Speicherung und Wiederherstellung von zur Session gehörigen Daten
verwendet werden. Dies ist äußerst nützlich, wenn eine andere als
die mit PHP-Sessions zur Verfügung stehende Art der Speicherung,
z.B. die Speicherung der Session-Daten in einer lokalen
Datenbank, bevorzugt wird.
Anmerkung:
Sie müssen in Ihrer php.ini-Datei die Konfigurationsoption
session.save_handler auf
user setzen, damit
session_set_save_handler() wirksam wird.
Anmerkung:
Die "schreiben"-Routine wird nicht ausgeführt, bevor die Ausgabe
abgeschlossen ist. Deshalb werden auch niemals Fehlermeldungen
der "schreiben"-Routine im Browser erscheinen. Wenn die Ausgabe
von Fehlermeldungen nötig ist, sollte diese stattdessen in eine
Datei geschrieben werden.
Das folgende Beispiel liefert eine dateibasierte
Session-Speicherung, die der Standard-Speicherroutine
files der PHP-Sessions ähnlich ist. Dieses
Beispiel kann problemlos erweitert werden, dass es
Datenbank-Speicherung mittels ihrer bevorzugten PHP-gestützten
Datenbank beinhaltet.
Beispiel 1.
session_set_save_handler() Beispiel
<?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("");
}
}
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));
}
/************************************************
* WARNUNG - Sie müssen hier irgendeine Art von *
* Speicherbereinigungsroutine realisieren. *
************************************************/
function gc ($maxlifetime) {
return true;
}
session_set_save_handler ("open", "close", "read", "write", "destroy", "gc");
session_start();
// verfahren Sie mit Sessions wie gewohnt
?>
|
|