English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
In diesem Tutorial werden Sie lernen, wie Sie PHP-Sitzungen verwenden, um bestimmte Daten temporär auf dem Server zu speichern.
Obwohl Sie Daten mit Cookies speichern können, gibt es einige Sicherheitsprobleme. Da Cookies auf dem Computer des Benutzers gespeichert werden, können Angreifer den Inhalt von Cookies leicht ändern, um möglicherweise schädliche Daten in Ihre Anwendung einzufügen und Ihre Anwendung möglicherweise zu beschädigen.
Darüber hinaus werden alle Cookie-Daten der Website automatisch mit jeder URL-Anfrage des Browsers an den Server gesendet. Dies bedeutet, dass Sie, wenn Sie auf dem System des Benutzers gespeichert haben5Cookies, jeder Cookie hat eine Größe von4KB müssen vom Browser hochgeladen werden, wenn der Benutzer jede Seite ansieht20 KB Daten, was möglicherweise die Leistung Ihrer Website beeinträchtigen könnte.
Sie können PHP Sitzungen verwenden, um diese beiden Probleme zu lösen. PHP Sitzungen speichern Daten auf dem Server anstatt auf dem Computer des Benutzers. In einer auf Sitzungen basierenden Umgebung wird jeder Benutzer durch eine eindeutige Nummer, die Sitzungs-ID oder SID, identifiziert. Diese eindeutige Sitzungs-ID wird verwendet, um jeden Benutzer mit seinen Informationen auf dem Server (z.B. E-Mail, Beiträge usw.) zu verknüpfen.
Hinweis:Die Sitzungs-ID wird vom PHP-Engine zufällig generiert und ist fast nicht vorhersagbar. Außerdem, da die Sitzungsdaten auf dem Server gespeichert werden, müssen sie nicht mit jedem Browser-Request gesendet werden.
Bevor Sie irgendeine Information in eine Sitzungsvariable speichern, müssen Sie zunächst die Sitzung starten. Um eine neue Sitzung zu beginnen, rufen Sie einfach die PHP-Funktion session_start() auf. Dies erstellt eine neue Sitzung und generiert einen eindeutigen Sitzungs-ID für den Benutzer.
Das PHP-Codebeispiel in diesem Beispiel startet nur eine neue Sitzung.
<?php //Beginnen Sie mit der Sitzung session_start(); ?>
Die Funktion session_start() überprüft zunächst, ob eine Sitzung bereits besteht, indem sie nach der Existenz der Sitzungs-ID sucht. Wenn eine Sitzung gefunden wird, wurde die Sitzung bereits gestartet und die Sitzungsvariablen werden gesetzt. Wenn nicht, wird eine neue Sitzungs-ID erstellt, um eine neue Sitzung zu starten.
Hinweis:Sie müssen session_start() am Anfang der Seite aufrufen (vor dem von dem Browser generierten beliebigen Output), genau wie beim Setzen von Cookies mit der Funktion setcookie().
Sie können alle Sitzungsdaten als Schlüssel-Wert-Paare im Superglobal-Array $_SESSION[] speichern. Sie können die gespeicherten Daten während der Lebensdauer der Sitzung abrufen. Sehen Sie sich den folgenden Skript an, der eine neue Sitzung erstellt und zwei Sitzungsvariablen registriert.
<?php //Sitzung wird gestartet session_start(); //Speicherung von Sitzungsdaten $_SESSION["firstname"] = "Peter"; $_SESSION["lastname"] = "Parker"; ?>
Um auf Sitzungsdaten zuzugreifen, die wir auf einer anderen Seite desselben Webdomänes gesetzt haben, genügt es, session_start() aufzurufen, um die Sitzung neu zu erstellen, und dann den entsprechenden Schlüssel an das verknüpfte Array $_SESSION zu übergeben.
<?php //Sitzung wird gestartet session_start(); //Zugriff auf Sitzungsdaten echo 'Hi, ' . $_SESSION["firstname"] . ' ' . $_SESSION["lastname"]; ?>
Der PHP-Code im obigen Beispiel ergibt folgenden Ausgang.
Hi, Peter Parker
Hinweis:Um auf Sitzungsdaten auf derselben Seite zuzugreifen, müssen Sie keine Sitzung neu erstellen, da sie bereits an der Oberseite der Seite gestartet ist.
Wenn Sie bestimmte Sitzungsdaten löschen möchten, müssen Sie einfach die entsprechenden Schlüssel im verknüpften Array $_SESSION entfernen, wie im folgenden Beispiel gezeigt:
<?php //Sitzung starten session_start(); //Löschen von Sitzungsdaten im Gange if(isset($_SESSION["lastname"])){ unset($_SESSION["lastname"]); } ?>
Um eine Sitzung vollständig zu löschen, genügt es, die Funktion session_destroy() aufzurufen. Diese Funktion erfordert keine Parameter und löscht alle Sitzungsdaten mit einer Einberufung.
<?php //Sitzung starten session_start(); //Sitzung löschen session_destroy(); ?>
Hinweis:Bevor Sie die Sitzung mit der Funktion session_destroy() löschen, müssen Sie die Sitzungsumgebung zunächst mit der Funktion session_start() neu erstellen, um sie löschen zu können.
Jede PHP-Sitzung hat einen Ablaufwert (Dauer, in Sekunden), der angibt, wie lange eine Sitzung aktiv bleiben soll, wenn keine Benutzeraktivität vorliegt. Sie können die Ablaufzeit dieser Verlängerung durch Ändern des Wertes der Variable session.gc_maxlifetime in der PHP-Konfigurationsdatei (php.ini) anpassen.