Heim  >  Artikel  >  Backend-Entwicklung  >  Was ist der Grund, warum die PHP-Sitzung verloren geht?

Was ist der Grund, warum die PHP-Sitzung verloren geht?

藏色散人
藏色散人Original
2021-03-01 09:23:413406Durchsuche

Die Gründe für den Verlust einer PHP-Sitzung sind: 1. Cookies sind auf dem Client deaktiviert. 2. Der Browser kann nicht auf Cookies zugreifen. 3. „session.use_trans_sid=0“ in php.ini ist nicht aktiviert -" während der Kompilierung. sid"-Option.

Was ist der Grund, warum die PHP-Sitzung verloren geht?

Die Betriebsumgebung dieses Artikels: Windows 7-System, PHP 8-Version, Dell G3-Computer.

Der Autor hat versehentlich ein Problem erhalten. Der Kunde sagte, dass die Sitzung der Website immer verloren gegangen sei. Dann habe ich nie den Grund gefunden. Schließlich habe ich herausgefunden, dass die Zeit auf dem Server nicht übereinstimmt Netzwerkzeit, was dazu führte, dass sich der Benutzer nicht anmelden bzw. sich nicht sofort anmelden und wieder abmelden konnte. Dabei habe ich herausgefunden, dass es möglicherweise noch andere Gründe gibt, die ich hier aufzeige und mit Ihnen teile.

Im Allgemeinen führen die folgenden Faktoren zum Verlust von SESSION:

1. Cookies sind auf dem Client deaktiviert

3. session.use_trans_sid=0 in php.ini oder The Die Option –enable-trans-sid ist beim Kompilieren nicht aktiviert (standardmäßig wird sie in einer Datei gespeichert). Die Datei des Benutzers wird basierend auf der vom Client bereitgestellten Sitzungs-ID abgerufen Der Wert der Variablen wird abgerufen. Die Sitzungs-ID kann über das Cookie des Clients oder über den Query_String des Http1.1-Protokolls (der Teil nach dem „?“ der aufgerufenen URL) an den Server gesendet werden, und dann liest der Server die Sitzung Verzeichnis...

Mit anderen Worten, die Sitzungs-ID ist die ID-Karte zum Abrufen der im Dienst gespeicherten Sitzungsvariablen. Wenn der Code session_start(); ausgeführt wird, wird eine Sitzungsdatei auf dem Server generiert, und die Sitzungsvariable wird so definiert, dass sie in der gerade generierten Sitzungsdatei in einer bestimmten Form gespeichert wird. Über die Sitzungs-ID können die definierten Variablen abgerufen werden.

Um die Sitzung zu verwenden, müssen Sie nach dem Überqueren der Seite erneut eine Sitzungsdatei erstellen und die entsprechende Sitzungs-ID verwenden, um die erste nicht zu erhalten Eine der oben genannten Variablen in der Sitzungsdatei, da diese Sitzungs-ID nicht der „Schlüssel“ zum Öffnen ist. Wenn Sie den Code session_id($session id); vor session_start(); hinzufügen, wird keine neue Sitzungsdatei generiert und die dieser ID entsprechende Sitzungsdatei wird direkt gelesen. Standardmäßig verwendet die Sitzung in PHP das Cookie des Clients, um die Sitzungs-ID zu speichern. Wenn also ein Problem mit dem Cookie des Clients auftritt, wirkt sich dies auf die Sitzung aus.

Es muss beachtet werden, dass die Sitzung nicht unbedingt auf Cookies angewiesen ist, was auch die Genialität der Sitzung im Vergleich zu Cookies darstellt. Wenn die Cookies des Clients deaktiviert sind oder ein Problem auftritt, hängt PHP die Sitzungs-ID automatisch an die URL an, sodass die Sitzungsvariable über die Sitzungs-ID seitenübergreifend verwendet werden kann.

Aber dieser Anhang hat auch bestimmte Bedingungen, nämlich „session.use_trans_sid = 1 in php.ini oder die Option –enable-trans-sid ist während der Kompilierung aktiviert“. Verstehen Sie die oben genannten Prinzipien. Lassen Sie uns nun Cookies beiseite legen und Sitzungen verwenden. Es gibt drei Hauptmethoden:

1 Setzen Sie session.use_trans_sid = 1 in php.ini oder aktivieren Sie beim Kompilieren die Option –enable-trans-sid PHP übergibt die Sitzungs-ID automatisch seitenübergreifend.

2. Übergeben Sie den Wert manuell über die URL und die Sitzungs-ID über das versteckte Formular.

3. Session_ID in einer Datei, Datenbank usw. speichern und während des seitenübergreifenden Prozesses manuell aufrufen.

【Empfohlenes Lernen: „

PHP-Video-Tutorial

“】

Das obige ist der detaillierte Inhalt vonWas ist der Grund, warum die PHP-Sitzung verloren geht?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn