PHP Handbuch
Zurück |  | Nach vorne

# session_set_save_handler

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

Zurück | Zum Anfang | Nach vorne
session_encode | Nach oben | session_cache_limiter