Heim >Backend-Entwicklung >PHP-Problem >Was tun, wenn die PHP-Sitzung seitenübergreifend verloren geht?
Lösung für den seitenübergreifenden PHP-Sitzungsverlust: Platzieren Sie zuerst „session_start();“ und konfigurieren Sie dann den Sitzungs-Autostart oder starten Sie die Sitzung manuell.
Empfohlen: „PHP-Video-Tutorial“
Heute möchte ich eine Sitzung zur Beurteilung der Benutzeranmeldung verwenden, die als Erkundung der vorherigen Sitzung angesehen werden kann Der Betriebsmechanismus der Sitzung ist wie folgt:
Sitzung ist ein Sitzungsmechanismus auf der Serverseite. Wenn der Client den Server auffordert, eine Sitzung zu erstellen, erkennt der Server zunächst, ob die Anforderung eine eindeutige Sitzungs-ID enthält. Dies bedeutet, dass der Server bereits eine Sitzung für den Benutzer erstellt hat. Folgen Sie einfach der Sitzungs-ID, um die Sitzung des Benutzers abzurufen. Wenn keine Sitzungs-ID vorhanden ist, erstellt der Server eine neue Sitzung mit einer eindeutigen Sitzungs-ID. Nach Abschluss der Erstellung wird die Sitzungs-ID vom Server an den Client zurückgegeben und lokal auf dem Client gespeichert.
Der allgemeine Mechanismus zum Speichern der Sitzungs-ID ist Cookie. Da Cookies jedoch künstlich verboten werden können, muss sichergestellt werden, dass die Sitzung nach dem Verbot von Cookies weiterhin durchgeführt werden kann, normalerweise durch Umschreiben der URL die Form http://...../xxx;jsessionid= ByOK3vjFD75aPnrF7C2HmdnV6QZcEbzWoWiBYEnLerjQ99zWpBng!-145788764, die andere ist eine am Ende der URL angehängte Abfragezeichenfolge in der Form http://..... /xxx?jsessionid=ByOK3vjFD75aPnrF7C2HmdnV6QZ cEbzWoWiBYEnLerjQ99zWpBng! -145788764 Es gibt keinen Unterschied zwischen diesen beiden Methoden für Benutzer, aber die Verwendung der ersten Methode ist auch hilfreich, um Sitzungs-ID-Informationen von normalen Programmparametern zu unterscheiden.
Um den Status während der gesamten Interaktion aufrechtzuerhalten, muss diese Sitzungs-ID nach jedem Pfad eingefügt werden, den der Client möglicherweise anfordert.
Ein weiteres Missverständnis zur Sitzungsungültigmachung:
Wenn wir über den Sitzungsmechanismus sprechen, hören wir oft das Missverständnis „Solange Sie den Browser schließen, verschwindet die Sitzung.“ Tatsächlich können Sie sich das Beispiel einer Mitgliedskarte vorstellen, wenn der Kunde das Geschäft nicht aktiv auffordert, die Karte zu stornieren, wird das Geschäft die Daten des Kunden nie ohne weiteres löschen. Dasselbe gilt für Sitzungen, sofern das Programm den Server nicht dazu auffordert, eine Sitzung zu löschen. Das Programm sendet normalerweise eine Anweisung zum Löschen der Sitzung, wenn sich der Benutzer abmeldet. Der Browser benachrichtigt den Server jedoch vor dem Schließen nie aktiv darüber, dass er geschlossen wird, sodass der Server keine Chance hat, zu erfahren, dass der Browser geschlossen wurde. Der Grund für diese Illusion ist, dass die meisten Sitzungsmechanismen Sitzungscookies zum Speichern von Sitzungs-IDs verwenden . und die Sitzungs-ID verschwindet nach dem Schließen des Browsers und die ursprüngliche Sitzung kann beim erneuten Herstellen einer Verbindung zum Server nicht gefunden werden. Wenn das vom Server gesetzte Cookie auf der Festplatte gespeichert wird oder eine Methode verwendet wird, um den vom Browser gesendeten HTTP-Anforderungsheader neu zu schreiben und die ursprüngliche Sitzungs-ID an den Server zu senden, kann die ursprüngliche Sitzung weiterhin gefunden werden, wenn der Browser geöffnet ist wieder geöffnet.
Das liegt daran, dass das Schließen des Browsers nicht dazu führt, dass die Sitzung gelöscht wird, wodurch der Server gezwungen wird, eine Ablaufzeit für die Sitzung festzulegen. Wenn die Zeit seit der letzten Nutzung der Sitzung durch den Client diesen Ablauf überschreitet Zu diesem Zeitpunkt wird der Server Es kann davon ausgegangen werden, dass der Client seine Aktivitäten gestoppt hat und die Sitzung gelöscht wird, um Speicherplatz zu sparen.
Okay, lasst uns viel Unsinn reden, lasst uns über die Lösung für den Sitzungsverlust sprechen:
1 sollte so weit wie möglich oben auf der Seite stehen;
2. Wenn so etwas in php.ini nicht vorhanden ist: Wenn Sie den Sitzungs-Autostart konfigurieren, müssen Sie die Sitzung vor jeder Sitzung manuell öffnen: session_start();
3 Sitzung ist eine super globale Variable in PHP, genau wie $_GET , $_POST, $_SERVER, also bei Verwendung Muss groß geschrieben werden: $_SESSION['username']=$username;
4 Beispiel für eine seitenübergreifende Übertragung: Eine.php-Seite überträgt $_SESSION['username'] an b.php:
a.php:
<?php session_start();$username=$_POST['username'];$_SESSION['username']=$username; ?>
b.php
880e0a19df1d92babf7ec23ac9d82cda
Das obige ist der detaillierte Inhalt vonWas tun, wenn die PHP-Sitzung seitenübergreifend verloren geht?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!