Wie funktionieren PHP-Sitzungen? (nicht “wie werden sie benutzt?”)

Sitzungsdateien werden normalerweise in /tmp/ auf dem Server gespeichert und heißen sess_{session_id} . Ich habe mir die Inhalte angeschaut und kann nicht herausfinden, wie sie wirklich funktionieren.

Das Abrufen des Variablennamens und des Inhalts aus der Datei ist einfach. Aber wie weiß PHP, welche Sitzung zu wem gehört?

Die Session-ID scheint völlig zufällig zu sein und eine IP-Adresse kann mehrere Benutzer haben, und jeder Benutzer kann mehrere Sitzungen haben, wenn sie mehr als ein Browser-Fenster geöffnet haben.

Wie funktioniert es?

Solutions Collecting From Web of "Wie funktionieren PHP-Sitzungen? (nicht “wie werden sie benutzt?”)"

In der allgemeinen Situation:

  • Die Sitzungs-ID wird an den Benutzer gesendet, wenn seine Sitzung erstellt wird.
  • es wird in einem Cookie gespeichert (standardmäßig PHPSESSID )
  • Dieser Cookie wird vom Browser bei jeder Anfrage an den Server gesendet
  • Der Server (PHP) verwendet diesen Cookie mit der Sitzungs-ID, um zu wissen, welche Datei diesem Benutzer entspricht.

Die Daten in den Sitzungsdateien sind der Inhalt von $_SESSION , serialisiert (dh dargestellt als eine Zeichenkette – mit einer function wie Serialisierung ) ; und wird nicht serialisiert, wenn die Datei von PHP geladen wird, um das $_SESSION Array $_SESSION .

Manchmal wird die Sitzungs-ID nicht in einem Cookie gespeichert, sondern auch in URLs gesendet – aber das ist heutzutage ziemlich selten.

Für weitere Informationen können Sie sich den Abschnitt Session-Handling des Handbuchs ansehen, der einige nützliche Informationen enthält.

Beispielsweise gibt es eine Seite zum Übergeben der Sitzungs-ID , in der erläutert wird, wie die Sitzungs-ID von Seite zu Seite, mithilfe eines Cookies oder in URLs übergeben wird – und welche Konfigurationsoptionen dies beeinflussen.

Wie funktioniert die PHP-Session?

  • Zuerst erstellt PHP eine 16 Byte lange eindeutige Identifikationsnummer (gespeichert als eine Kette von 32 hexadezimalen Zeichen, z. B. a86b10aeb5cd56434f8691799b1d9360 ) für eine einzelne Sitzung.

  • PHPSESSID Cookie übergibt diese eindeutige Identifikationsnummer an den Browser des Benutzers, um diese Nummer zu speichern.

  • Eine neue Datei wird auf dem Server mit demselben Namen einer eindeutigen Identifikationsnummer mit dem Präfix sess_ erstellt ( sess_a86b10aeb5cd56434f8691799b1d9360 . B. sess_a86b10aeb5cd56434f8691799b1d9360 .)

  • Der Browser sendet diesen Cookie mit jeder Anfrage an den Server.

  • Wenn PHP diese eindeutige Identifikationsnummer von PHPSESSID-Cookie erhält (bei jeder Anfrage), sucht PHP im temporären Verzeichnis und vergleicht diese Nummer mit dem Dateinamen. Wenn beide identisch sind, wird die vorhandene Sitzung abgerufen, andernfalls wird eine neue Sitzung für diesen Benutzer erstellt.

Eine Sitzung wird zerstört, wenn der Benutzer den Browser schließt oder die Site verlässt. Der Server beendet auch die Sitzung, nachdem der vorbestimmte Zeitraum der Sitzungszeit abgelaufen ist. Dies sind die einfachen Mechanismusschritte, mit denen PHP die Sitzung behandelt. Ich hoffe, dieser Artikel hilft Ihnen zu verstehen, wie PHP SESSION funktioniert.

Weitere Informationen finden Sie in diesem Artikel. Wie funktioniert die PHP-Session?

Die Sitzungs-ID ist in der Tat zufällig und wird je nach Konfiguration in einem Cookie oder in der URL übergeben. Vielleicht hast du diese URL bereits in einigen URLs gesehen. Es gibt auch einen Cookie mit diesem Namen.

Sitzungen in PHP werden mit der function session_start () gestartet. Wie bei der function setcookie () muss die function session_start () vor jedem HTML-Code, einschließlich leerer Zeilen, auf der Seite stehen. Es sieht so aus: < ?php session_start( );?> ……. etc Die function session_start () erzeugt eine zufällige Session Id und speichert sie in einem Cookie auf dem Computer des Benutzers ( Dies ist die einzige Sitzungsinformation, die tatsächlich auf der Clientseite gespeichert wird.) Der Standardname für das Cookie ist PHPSESSID, obwohl dies in den PHP-Konfigurationsdateien auf dem Server geändert werden kann (die meisten Hosting-Unternehmen lassen es jedoch in Ruhe). Um auf die Session-ID in Ihrem PHP-Code zu verweisen, würden Sie daher auf die Variable $ PHPSESSID verweisen (es ist ein Cookie-Name; erinnern Sie sich daran, dass es sich um Cookies handelt).