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.

add a note add a note

User Contributed Notes 1 note

up
12
ryan dot jentzsch at gmail dot com
9 years ago
One thing that should be understood is that if you are creating a RESTfull service using sessions is by nature NOT a RESTfull process.
To Top