Verwendung von Sitzungen und Sitzungsvariablen in PHP

Die Behandlung von Sitzungen ist ein Schlüsselkonzept in PHP, mit dem Benutzerinformationen auf allen Seiten einer Website oder App beibehalten werden können. In diesem Beitrag lernen Sie die Grundlagen der Session-Behandlung in PHP. 

Wir beginnen mit einer Erklärung, wie Sitzungen funktionieren und wie sie mit Cookies zusammenhängen. Dann werden wir uns ein paar Codeausschnitte ansehen, die zeigen, wie man mit Sitzungen arbeitet. Sie erfahren, wie Sie Sitzungen erstellen und löschen und Sitzungsvariablen ändern.

Was ist eine Session in PHP??

Eine Sitzung ist ein Mechanismus, um Informationen auf den verschiedenen Webseiten zu speichern, um Benutzer beim Navigieren auf einer Website oder App zu identifizieren. Fragen Sie sich, warum Sitzungen für eine Website benötigt werden? Um zu sehen, warum Sitzungen notwendig sind, müssen wir zurückgehen und sehen, wie das HTTP-Protokoll funktioniert.

Das HTTP-Protokoll ist ein zustandsloses Protokoll. Das bedeutet, dass ein Server sich nicht an einen bestimmten Benutzer zwischen mehreren Anforderungen erinnern kann. Wenn Sie beispielsweise auf eine Webseite zugreifen, ist der Server lediglich für die Bereitstellung des Inhalts der angeforderten Seite verantwortlich. Wenn Sie also auf andere Seiten derselben Website zugreifen, interpretiert der Webserver jede Anforderung einzeln, als wären sie nicht miteinander verbunden. Der Server kann nicht wissen, dass jede Anfrage von demselben Benutzer stammt.

Das folgende Diagramm zeigt das HTTP-Protokoll in einer Nussschale.

Wenn Sie in diesem Modell benutzerspezifische Informationen anzeigen möchten, müssen Sie einen Benutzer in jeder Anforderung authentifizieren. Stellen Sie sich vor, Sie müssten auf jeder Seite, auf der Ihre Profilinformationen angezeigt wurden, Ihren Benutzernamen und Ihr Kennwort eingeben! Ja, es wäre umständlich und überhaupt nicht praktikabel, und hier kommen die Sitzungen ins Spiel.

In einer Sitzung können Sie Informationen auf den verschiedenen Seiten einer einzelnen Site oder App gemeinsam nutzen. Dies hilft, den Status zu erhalten. Auf diese Weise kann der Server wissen, dass alle Anforderungen von demselben Benutzer stammen. Auf diese Weise kann die Site benutzerspezifische Informationen und Präferenzen anzeigen.

Anmeldungsablauf mit Sitzungen und Cookies

Lassen Sie uns schnell einen allgemeinen Anmeldungsfluss für eine Website durchgehen, um zu verstehen, was hinter den Kulissen passiert.

  1. Ein Benutzer öffnet die Anmeldeseite einer Website.
  2. Nach dem Senden des Anmeldeformulars authentifiziert ein Server am anderen Ende die Anforderung, indem die eingegebenen Anmeldeinformationen überprüft werden.
  3. Wenn die vom Benutzer eingegebenen Anmeldeinformationen gültig sind, erstellt der Server eine neue Sitzung. Der Server generiert eine eindeutige Zufallszahl, die als Sitzungs-ID bezeichnet wird. Außerdem wird auf dem Server eine neue Datei erstellt, in der die sitzungsspezifischen Informationen gespeichert werden.
  4. Als Nächstes wird eine Sitzungs-ID zusammen mit der angeforderten Ressource an den Benutzer zurückgegeben. Hinter den Kulissen wird diese Sitzungs-ID im gesendet PHPSESSID Cookie im Antwortheader.
  5. Wenn der Browser die Antwort vom Server erhält, stößt er auf PHPSESSID Cookie-Header Wenn der Browser Cookies zulässt, werden diese gespeichert PHPSESSID Cookie, das die vom Server übergebene Sitzungs-ID speichert.
  6. Für nachfolgende Anfragen steht der PHPSESSID Der Cookie wird an den Server zurückgegeben. Wenn der Server auf die PHPSESSID Cookie, es wird versucht, eine Sitzung mit dieser Sitzungs-ID zu initialisieren. Dazu wird die Sitzungsdatei geladen, die zuvor während der Sitzungsinitialisierung erstellt wurde. Dann wird die super-globale Array-Variable initialisiert $ _SESSION mit den in der Sitzungsdatei gespeicherten Daten.

Auf diese Weise bleiben die Benutzerdaten über mehrere Anforderungen hinweg erhalten, und der Benutzer bleibt während einer Sitzung angemeldet.

Das folgende Diagramm zeigt, wie das HTTP-Protokoll mit Sitzungen funktioniert.

Nachdem Sie nun eine kurze Einführung in die Funktionsweise von Sitzungen erhalten haben, erstellen wir einige praktische Beispiele, um zu zeigen, wie Sitzungsvariablen erstellt und bearbeitet werden.

So starten Sie eine Sitzung

In diesem Abschnitt erfahren Sie, wie Sie eine Sitzung in PHP starten.

Wann immer Sie mit Sitzungsvariablen umgehen möchten, müssen Sie sicherstellen, dass eine Sitzung bereits gestartet ist. Es gibt verschiedene Möglichkeiten, eine Sitzung in PHP zu starten.

Verwenden Sie die session_start Funktion

Dies ist die Methode, die Sie am häufigsten sehen werden, bei der eine Sitzung vom gestartet wird session_start Funktion.

Das Wichtige ist, dass das session_start Die Funktion muss am Anfang des Skripts aufgerufen werden, bevor eine Ausgabe an den Browser gesendet wird. Ansonsten stößt man auf das Infame Header werden bereits gesendet Error.

Starten Sie automatisch eine Sitzung

Wenn Sie in Ihrer gesamten Anwendung Sitzungen verwenden müssen, können Sie auch das automatische Starten einer Sitzung ohne die Verwendung von aktivieren session_start Funktion.

Es gibt eine Konfigurationsoption in der php.ini Datei, mit der Sie für jede Anforderung eine Sitzung automatisch starten können-session.auto_start. Standardmäßig ist es eingestellt 0, und Sie können es einstellen 1 um die Autostartfunktion zu aktivieren.

session.auto_start = 1

Auf der anderen Seite, wenn Sie keinen Zugriff auf die haben php.ini Wenn Sie den Apache-Webserver verwenden, können Sie diese Variable auch mithilfe von festlegen .htaccess Datei.

php_value session.auto_start 1

Wenn Sie die obige Zeile in die .htaccess Datei, die eine Sitzung automatisch in Ihrer PHP-Anwendung starten soll.

So erhalten Sie eine Sitzungs-ID

Wie bereits erwähnt, erstellt der Server für jede neue Sitzung eine eindeutige Nummer. Wenn Sie eine Sitzungs-ID erhalten möchten, können Sie die verwenden Session-ID Funktion, wie im folgenden Snippet gezeigt.

Das sollte Ihnen die aktuelle Sitzungs-ID geben. Das Session-ID Funktion ist insofern interessant, als auch ein Argument verwendet werden kann - eine Sitzungs-ID. Wenn Sie die vom System generierte Sitzungs-ID durch Ihre eigene ersetzen möchten, können Sie diese dem ersten Argument von angeben Session-ID Funktion.

Es ist wichtig zu wissen, dass die Session-ID Funktion muss vor dem platziert werden session_start aufrufen, wenn Sie eine Sitzung mit einer benutzerdefinierten Sitzungs-ID starten möchten.

So erstellen Sie Sitzungsvariablen

In diesem Abschnitt erfahren Sie, wie Sie Sitzungsvariablen in PHP initialisieren.

Wie bereits erwähnt, wird nach dem Start einer Sitzung die $ _SESSION Das super-globale Array wird mit den entsprechenden Sitzungsinformationen initialisiert. Standardmäßig wird es mit einem leeren Array initialisiert, und Sie können mithilfe eines Schlüsselwertpaares weitere Informationen speichern.

Gehen wir das folgende Beispielskript durch, das veranschaulicht, wie Sitzungsvariablen initialisiert werden.

Wie Sie sehen können, haben wir eine Sitzung am Anfang des Skripts mit der session_start Funktion. Anschließend haben wir einige Sitzungsvariablen initialisiert. Zum Schluss haben wir diese Variablen mit der $ _SESSION super global.

Wenn Sie die Daten in einer Sitzung speichern, verwenden Sie die $ _SESSION Super-Global, wird es schließlich in einer entsprechenden Sitzungsdatei auf dem Server gespeichert, die beim Start der Sitzung erstellt wurde. Auf diese Weise werden die Sitzungsdaten von mehreren Anforderungen gemeinsam genutzt.

Wie bereits erwähnt, werden die Sitzungsinformationen über alle Anforderungen hinweg gemeinsam genutzt, sodass auf die auf einer Seite initialisierten Sitzungsvariablen auch von anderen Seiten zugegriffen werden kann, bis die Sitzung abläuft. Im Allgemeinen läuft eine Sitzung ab, wenn der Browser geschlossen wird.

So ändern und löschen Sie Sitzungsvariablen

Sie können Sitzungsvariablen wie in normalen PHP-Variablen ändern oder löschen, die zuvor in der Anwendung erstellt wurden.

Mal sehen, wie man die Sitzungsvariablen ändert.

Im obigen Skript haben wir geprüft, ob die $ _SESSION ['count'] Variable wird an erster Stelle gesetzt. Wenn es nicht festgelegt ist, setzen wir es auf 1, Andernfalls erhöhen wir es um 1. Wenn Sie also diese Seite mehrmals aktualisieren, sollten Sie feststellen, dass der Zähler jedes Mal um eins erhöht wird! 

Wenn Sie dagegen eine Sitzungsvariable löschen möchten, können Sie die verwenden unset Funktion, wie im folgenden Snippet gezeigt.

Somit können Sie nicht mehr auf das zugreifen $ _SESSION ['log_in_user_id'] Variable, wie sie von der gelöscht wird unset Funktion. So können Sie die Sitzungsinformationen ändern.

So zerstören Sie eine Sitzung

In diesem Abschnitt erfahren Sie, wie Sie eine Sitzung zerstören können. Im vorigen Abschnitt haben wir das besprochen unset Diese Funktion wird verwendet, wenn Sie bestimmte Sitzungsvariablen löschen möchten. Wenn Sie dagegen alle sitzungsbezogenen Daten auf einmal löschen möchten, können Sie das verwenden session_destroy Funktion.

Versuchen wir anhand des folgenden Beispiels zu verstehen, wie es funktioniert.

Das session_destroy Die Funktion löscht alles, was in der aktuellen Sitzung gespeichert ist. Sie sehen also ein Leerzeichen $ _SESSION Variable aus den nachfolgenden Anforderungen, da die Sitzungsdaten, die auf der Festplatte gespeichert waren, vom gelöscht wurden session_destroy Funktion.

Im Allgemeinen würden Sie die verwenden session_destroy Funktion, wenn der Benutzer abgemeldet wird.

Fazit

In diesem Artikel haben wir die Grundlagen der Session-Behandlung in PHP untersucht. Es ist ein Schlüsselkonzept, mit dem Sie Informationen über Webseiten hinweg beibehalten können.

In der ersten Hälfte des Artikels haben wir die grundlegenden Konzepte von Sitzungen diskutiert. Später haben wir einige PHP-Beispiele erstellt, um zu zeigen, wie Sie Sitzungen erstellen und löschen sowie Sitzungsvariablen bearbeiten können.