Einführung

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

Einem Besucher wird beim Aufruf Ihrer 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 Ihnen, Daten zwischen Anfragen im superglobalen Array $_SESSION zu speichern. Wenn ein Besucher Ihre 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 Sie session.auto_start aktivieren, können Objekte nur in Ihre Sessions aufgenommen werden, indem die Klassendefinition mittels auto_prepend_file geladen wird. Andernfalls müssen Sie Ihr Objekt mittels serialize() serialisieren und danach mittels unserialize() deserialisieren.

$_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 darauf 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 resource-Variablen 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 Scripts. php_serialize hat diese Einschränkungen nicht. php_serialize steht seit PHP 5.5.4 zur Verfügung.

Hinweis:

Bitte beachten Sie beim Arbeiten mit Sessions, dass der Datensatz einer Session nicht angelegt wird, bevor eine Variable mit der Funktion session_register() registriert oder dem superglobalen Array $_SESSION ein neuer Schlüssel hinzugefügt wird. Das gilt auch dann, wenn eine Session mit der Funktion session_start() gestartet wurde.

Hinweis:

Mit PHP 5.2.2 wurde die nicht dokumentierte Eigenschaft eingeführt, Session-Dateien in "/tmp" zu speichern, selbst wenn open_basedir aktiviert war und "/tmp" nicht ausdrücklich zur Liste der zulässigen Pfade hinzugefügt wurde. Diese Eigenschaft wurde in PHP 5.3.0 aus PHP entfernt.