Das Sitzungshandling ist ein sehr wichtiges Konzept in PHP, das es ermöglicht, dass Benutzerinformationen auf allen Seiten einer Website oder Anwendung unverändert bleiben.
Was ist eine Sitzung in PHP?
Eine Sitzung ist ein Mechanismus zum Speichern von Informationen auf verschiedenen Webseiten, um Benutzer zu identifizieren, während sie eine Website oder Anwendung durchsuchen.
Jeder muss sich diese Frage stellen: Warum braucht die Website Sitzungen? Bevor wir dieses Problem besprechen, müssen wir noch einmal einen Blick auf die Funktionsweise des HTTP-Protokolls werfen.
Das HTTP-Protokoll ist ein zustandsloses Protokoll, was bedeutet, dass sich der Server zwischen Anfragen nicht an einen bestimmten Benutzer erinnern kann. Wenn Sie beispielsweise eine Webseite besuchen, ist der Server nur für die Bereitstellung des Inhalts der angeforderten Seite verantwortlich. Wenn Sie also andere Seiten derselben Website besuchen, interpretiert der Webserver jede Anfrage einzeln, als hätten sie nichts miteinander zu tun. Der Server kann nicht erkennen, dass jede Anfrage vom selben Benutzer stammt.
(Kostenloses Lernvideo-Tutorial: PHP-Video-Tutorial)
Die folgende Abbildung beschreibt kurz das HTTP-Protokoll.
Wenn Sie in diesem Prozess die Informationen eines bestimmten Benutzers anzeigen möchten, müssen Sie den Benutzer bei jeder Anfrage authentifizieren. Stellen Sie sich vor, Sie müssten bei jeder Anfrage Ihren Benutzernamen und Ihr Passwort auf der Seite eingeben, um sich zu authentifizieren. Das wäre zu mühsam und überhaupt nicht praktikabel. Allerdings ist die Sitzung zu diesem Zeitpunkt praktisch.
Eine Sitzung ermöglicht es Benutzern, Informationen über verschiedene Seiten einer einzelnen Website oder Anwendung hinweg auszutauschen, was zur Aufrechterhaltung des Status beiträgt. Dadurch weiß der Server, dass alle Anfragen von demselben Benutzer stammen, sodass die Site benutzerspezifische Informationen und Präferenzen anzeigen kann.
Das folgende Diagramm beschreibt, wie das HTTP-Protokoll mit Sitzungen verwendet wird.
Wie geht PHP mit Sitzungen um?
1. Starten Sie die Sitzung
Wenn Sie Sitzungsvariablen verarbeiten möchten, müssen Sie sicherstellen, dass die Sitzung gestartet wurde. Es gibt mehrere Möglichkeiten, eine Sitzung in PHP zu starten.
1), verwenden Sie die Funktion „session_start“
Dies ist die gebräuchlichste Methode, bei der die Sitzung durch die Funktion „session_start“ gestartet wird.
Wichtig ist, dass die Funktion session_start am Anfang des Skripts aufgerufen werden muss, bevor eine Ausgabe an den Browser gesendet wird. Andernfalls werden Sie auf den berüchtigten Fehler „Header wurden bereits gesendet“ stoßen.
2), Sitzung automatisch starten
Wenn Sie die Sitzung in der gesamten Anwendung verwenden müssen, können Sie die Sitzung auch automatisch starten, ohne die Funktion session_start zu verwenden.
Es gibt eine Konfigurationsoption session.auto_start in der php.ini-Datei, die es uns ermöglicht, für jede Anfrage automatisch eine Sitzung zu starten. Standardmäßig ist es auf 0 eingestellt, wir können es auf 1 setzen, um die Autostart-Funktion zu aktivieren.
2. Holen Sie sich die Sitzungs-ID
Der Server erstellt eine eindeutige ID für jede neue Sitzung. Wenn Sie die Sitzungs-ID erhalten möchten, können Sie die Funktion session_id verwenden, wie im folgenden Snippet gezeigt.
Dies sollte Ihnen die aktuelle Sitzungs-ID geben. Die Funktion session_id ist interessant, weil sie auch einen Parameter annehmen kann – eine Sitzungs-ID. Wenn Sie die vom System generierte Sitzungs-ID durch Ihre eigene ersetzen möchten, können Sie sie im ersten Parameter der Funktion session_id angeben.
Es ist wichtig zu beachten, dass, wenn Sie eine Sitzung mit einer benutzerdefinierten Sitzungs-ID starten möchten, die Funktion session_id vor session_start aufgerufen werden muss.
3. Sitzungsvariablen erstellen
Sobald die Sitzung gestartet ist, initialisiert $_SESSION das superglobale Array mit den entsprechenden Sitzungsinformationen. Standardmäßig wird es mit einem leeren Array initialisiert. Sie können Schlüssel-Wert-Paare verwenden, um weitere Informationen zu speichern.
Sehen wir uns anhand von Codebeispielen an, wie Sitzungsvariablen initialisiert werden.
Wie oben gezeigt, verwenden wir die Funktion session_start, um eine Sitzung am Anfang des Skripts zu starten. Anschließend initialisieren wir mehrere Sitzungsvariablen _SESSION superglobal, um auf diese Variablen zuzugreifen.
Wenn Sie den Superglobal $_SESSION zum Speichern von Daten in einer Sitzung verwenden, werden diese letztendlich in der entsprechenden Sitzungsdatei auf dem Server gespeichert, die beim Start der Sitzung erstellt wird. Auf diese Weise werden Sitzungsdaten über mehrere Anfragen hinweg gemeinsam genutzt.
Wie bereits erwähnt, werden Sitzungsinformationen zwischen Anfragen ausgetauscht, sodass auf einer Seite initialisierte Sitzungsvariablen auch von anderen Seiten aus zugänglich sind, bis die Sitzung abläuft. Normalerweise läuft die Sitzung ab, wenn der Browser geschlossen wird.
4. Sitzungsvariablen ändern und löschen
Wir können zuvor in der Anwendung erstellte Sitzungsvariablen genauso ändern oder löschen wie normale PHP-Variablen.
Nehmen wir ein Beispiel, um zu sehen, wie Sitzungsvariablen geändert werden.
Im obigen Skript prüfen wir zunächst, ob die Variable $_session['count'] gesetzt ist. Wenn es nicht gesetzt ist, setzen wir es auf 1, andernfalls erhöhen wir es um 1. Wenn Sie diese Seite also mehrmals aktualisieren, können Sie sehen, wie sich der Zähler jedes Mal um eins erhöht!
Wenn Sie andererseits die Sitzungsvariable löschen möchten, können Sie die Unset-Funktion verwenden, wie im folgenden Snippet gezeigt:
In Auf diese Weise können wir nicht erneut auf die Variable $_SESSION['logged_in_user_id'] zugreifen. Weil es durch die Unset-Funktion gelöscht wurde.
5. Zerstören Sie die Sitzung
Wir wissen oben, dass wir die Unset-Funktion verwenden können, um bestimmte Sitzungsvariablen zu löschen ?
Es ist eigentlich ganz einfach, wir können die Funktion session_destroy verwenden.
Sehen wir uns an, wie die Funktion session_destroy funktioniert.
Beschreibung: Die Funktion session_destroy löscht alle in der aktuellen Sitzung gespeicherten Inhalte. Wenn daher die auf der Festplatte gespeicherten Sitzungsdaten durch die Funktion session_destroy gelöscht werden, sehen wir bei nachfolgenden Anfragen eine leere Sitzungsvariable.
Hinweis: Normalerweise wird die Funktion session_destroy nur verwendet, wenn sich der Benutzer abmeldet
Empfohlene Tutorials zu verwandten Artikeln: PHP-Tutorial
Das obige ist der detaillierte Inhalt vonAnalyse der PHP-Sitzungsverarbeitung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!