session_set_save_handler

(PHP 4, PHP 5)

session_set_save_handler --  Setzt benutzerdefinierte Session-Speicherfunktionen

Beschreibung

bool 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. Gibt bei Erfolg TRUE zurück, im Fehlerfall FALSE.

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.

Damit die Speicherroutine funktioniert wie erwartet, muss die read-Function immer einen String-Wert zurückgeben. Wenn es keine Daten zu lesen gibt, geben Sie eine leere Zeichenkette zurück. Rückgabewerte anderer Routinen werden in boolesche Ausdrücke umgewandelt. TRUE für einen Erfolg, FALSE für einen Fehler.

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(
""); // Must return "" here.
  
}

}

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
?>

Siehe auch die session.save_handler Konfigurationsanweisung.

Hosting by: Hurra Communications GmbH
Generated: 2007-01-26 17:57:08