# Sessionbehandlung

# Einführung

Die Unterstützung von Sessions in PHP bietet die Möglichkeit, bestimmte Daten während einer Folge von Aufrufen einer Website festzuhalten.

Einem Besucher wird beim Aufruf einer Website eine eindeutige ID, die sogenannte Session-ID, zugeordnet. Diese wird entweder benutzerseitig in einem Cookie abgelegt oder in der URL übermittelt.

Die Unterstützung von Sessions erlaubt es, Daten zwischen Anfragen im superglobalen Array $_SESSION zu speichern. Wenn ein Besucher eine Website aufruft, überprüft PHP automatisch (falls session.auto_start auf 1 gesetzt ist) oder auf Anfrage (explizit durch session_start()), ob mit der Anfrage schon eine bestimmte Session-ID gesendet wurde. Wenn dies der Fall ist, wird die zuvor gespeicherte Umgebung wiederhergestellt.

Achtung

Falls session.auto_start aktiviert ist, können Objekte nur dann in Sessions aufgenommen werden, wenn die Klassendefinition mittels auto_prepend_file geladen wird. Andernfalls muss das Objekt mittels serialize() serialisiert werden und danach mittels unserialize() deserialisiert werden.

$_SESSION (und alle registrierten Variablen) werden intern von PHP unter Verwendung der in der Konfigurationseinstellung session.serialize_handler festgelegten Serialisierungsroutine serialisiert, nachdem die Anfrage beendet ist. Registrierte Variablen, die nicht definiert sind, werden als nicht definiert gekennzeichnet. Auch bei den folgenden Zugriffen werden sie nicht vom Session-Modul definiert, außer der Benutzer definiert sie später.

Warnung

Weil Session-Daten serialisiert werden, können Variablen vom Typ resource nicht in der Session gespeichert werden.

Die Serialisierungsroutinen (`php` und `php_binary`) erben die Beschränkungen für register_globals. Daher können numerische Indizes oder alphanumerische Indizes, die Sonderzeichen (`|` und `!`) enthalten, nicht verwendet werden. Deren Verwendung erzeugt Fehler beim Beenden des Skripts. `php_serialize` hat diese Einschränkungen nicht.

> Hinweis:

> Es ist beim Arbeiten mit Sessions zu beachten, dass der Datensatz einer Session erst dann erstellt wird, wenn eine Variable durch Hinzufügen eines neuen Schlüssels zum superglobalen Array $_SESSION registriert wurde. Das gilt auch dann, wenn eine Session mit der Funktion session_start() gestartet wurde.

- Installation/Konfiguration
  - Anforderungen
  - Installation
  - Laufzeit-Konfiguration
- Vordefinierte Konstanten
- Beispiele
  - Grundlegende Anwendung
  - Übermittlung der Session-ID
  - Individuelle Session-Routinen
- Fortschritt eines Uploads in einer Session
- Sessions und Sicherheit
  - Grundlagen der Session-Verwaltung
  - INI-Einstellungen für die Sicherheit von Sessions
- Session-Funktionen
  - session_abort — Verwirft Änderungen am Session-Array und beendet die Session
  - session_cache_expire — Liefert und/oder setzt die aktuelle Cache-Verfallszeit
  - session_cache_limiter — Liefert und/oder setzt die aktuelle Cacheverwaltung
  - session_commit — Alias von session_write_close
  - session_create_id — Erzeugt eine neue Session-ID
  - session_decode — Dekodiert die Daten einer Session aus einer session-kodierten Zeichenkette
  - session_destroy — Löscht alle in einer Session registrierten Daten
  - session_encode — Kodiert die Daten der aktuellen Session als session-kodierte Zeichenkette
  - session_gc — Führt die Garbage Collection der Session-Daten durch
  - session_get_cookie_params — Liefert die Parameter des Session-Cookies
  - session_id — Liefert und/oder setzt die aktuelle Session-ID
  - session_module_name — Liefert und/oder setzt das aktuelle Session-Modul
  - session_name — Liefert und/oder setzt den Namen der aktuellen Session
  - session_regenerate_id — Ersetzt die aktuelle Session-ID durch eine neu erzeugte
  - session_register_shutdown — Funktion zum Schließen von Sessions
  - session_reset — Initialisiert das Session-Array mit seinen ursprünglichen Werten neu
  - session_save_path — Liefert und/oder setzt den aktuellen Speicherpfad der Session
  - session_set_cookie_params — Setzt die Session-Cookie-Parameter
  - session_set_save_handler — Setzt benutzerdefinierte Session-Speicherfunktionen
  - session_start — Erzeugt eine neue Session oder setzt eine vorhandene fort
  - session_status — Liefert den Status der aktuellen Session
  - session_unset — Löscht alle Session-Variablen
  - session_write_close — Speichert die Session-Daten und beendet die Session
- SessionHandler — Die Klasse SessionHandler
  - SessionHandler::close — Schließt eine Session
  - SessionHandler::create_sid — Liefert eine neue Session-ID
  - SessionHandler::destroy — Löscht eine Session
  - SessionHandler::gc — Löscht alte Sessions
  - SessionHandler::open — Initialisiert eine Session
  - SessionHandler::read — Ruft die Session-Daten ab
  - SessionHandler::write — Speichert die Session-Daten
- SessionHandlerInterface — Die Schnittstelle SessionHandlerInterface
  - SessionHandlerInterface::close — Schließt eine Session
  - SessionHandlerInterface::destroy — Löscht eine Session
  - SessionHandlerInterface::gc — Löscht alte Sessions
  - SessionHandlerInterface::open — Initialisiert eine Session
  - SessionHandlerInterface::read — Ruft die Session-Daten ab
  - SessionHandlerInterface::write — Speichert die Session-Daten
- SessionIdInterface — Die Schnittstelle SessionIdInterface
  - SessionIdInterface::create_sid — Erzeugt eine Session-ID
- SessionUpdateTimestampHandlerInterface — Die Schnittstelle SessionUpdateTimestampHandlerInterface
  - SessionUpdateTimestampHandlerInterface::updateTimestamp — Aktualisiert den Zeitstempel
  - SessionUpdateTimestampHandlerInterface::validateId — Validiert eine ID

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open