In der PHP-Entwicklung werden Session_abort () und Session_unset () häufig verwendete Sitzungsfunktionen verwendet. In einigen Fällen können diese beiden Funktionen jedoch einige unerwartete Ergebnisse erzielen, wenn sie zusammen verwendet werden. In diesem Artikel wird die Rolle dieser beiden Funktionen und die Details untersucht, die bei der Verwendung in Verbindung miteinander beachtet werden müssen, wodurch Entwickler ihr Verhalten besser verstehen und potenzielle Probleme vermeiden können.
Session_abort ()
Session_abort () wird verwendet, um Datenänderungen für die aktuelle Sitzung zu verwerfen. Dies bedeutet, dass, wenn keine nicht gespeicherten Sitzungsdaten aufgerufen werden, nach Sitzung_abort () aufgerufen wird, sie nicht in den Sitzungsspeicher (normalerweise eine Datei, Datenbank oder ein anderes Speichermedium) geschrieben wird. Einfach ausgedrückt, rufen Sie Session_ABORT () an, dass die aktuellen Sitzungsdaten beim Aufrufen verworfen werden.
Session_unset ()
Session_unset () wird verwendet, um alle Sitzungsvariablen in der aktuellen Sitzung zu löschen. Es ist erwähnenswert, dass es in der Sitzung einfach Variablen löscht, ohne die Sitzung zu schließen oder die Sitzungsdaten zu zerstören. Nach dem Aufrufen dieser Funktion ist die Sitzung selbst weiterhin gültig, und der Benutzer kann die Sitzung weiterhin verwenden, es sei denn, Session_destroy () wird explizit berufen, um die Sitzung zu zerstören.
Obwohl Session_abort () und Session_unset () ihre spezifischen Funktionen haben, können Entwickler während der Entwicklung manchmal ihre Rolle missverstehen, insbesondere wenn diese beiden Funktionen gleichzeitig verwendet werden. Hier sind einige häufige Missverständnisse und Vorsichtsmaßnahmen:
Missverständnis 1: Session_abort () kann Sitzungsvariablen löschen <br> Einige Entwickler denken möglicherweise, dass Session_abort () alle Sitzungsvariablen löschen kann. Session_ABORT () verlagert jedoch die Änderungen der Sitzungsdaten einfach und löscht keine Sitzungsvariablen. Die Aufgabe, Sitzungsvariablen zu löschen, sollte von Session_unset () erfolgen. Wenn Sie also alle Sitzungsvariablen löschen möchten, wenn die Sitzung unterbrochen wird, müssen Sie zuerst Session_unset () und dann Session_abort () anrufen.
Missverständnis 2: Session_unset () wirkt sich auf die Persistenz der Sitzung <br> aus Viele Menschen glauben fälschlicherweise, dass Calling Session_unset () die gesamte Sitzung zerstören wird. Tatsächlich löscht es einfach die Sitzungsvariablen, aber die Sitzung selbst existiert immer noch. Das heißt, auch wenn Session_unset () aufgerufen wird, kann der Benutzer die Sitzung in nachfolgenden Anforderungen weiterhin verwenden. Um die gesamte Sitzung zu zerstören, sollte Session_destroy () verwendet werden.
Szene 1: Löschen Sie die Sitzungsdaten und verwerfen Sie die Änderung <br> Angenommen, Sie arbeiten an einem Anmeldesystem und möchten Sitzungsdaten löschen und Sitzungsänderungen abwerfen, wenn sich der Benutzer anmeldet. Sie können die folgenden Schritte ausführen:
Verwenden Sie Session_unset (), um alle Variablen in der aktuellen Sitzung zu löschen.
Call Session_abort () , um Sitzungsdatenänderungen abzuwerfen.
Wenn Sie die Sitzung vollständig zerstören möchten, können Sie Session_Destroy () anrufen, die die Sitzungsdatei zerstören und die Sitzung beenden.
Codebeispiel:
<span><span><span class="hljs-title function_ invoke__">session_start</span></span><span>();
</span><span><span class="hljs-comment">// Sitzungsvariablen löschen</span></span><span>
</span><span><span class="hljs-title function_ invoke__">session_unset</span></span><span>();
</span><span><span class="hljs-comment">// Modifizierte Sitzungsdaten verwerfen</span></span><span>
</span><span><span class="hljs-title function_ invoke__">session_abort</span></span><span>();
</span><span><span class="hljs-comment">// Zerstöre die Sitzung</span></span><span>
</span><span><span class="hljs-title function_ invoke__">session_destroy</span></span><span>();
</span></span> Szenario 2: Nur ein Teil der Sitzungsdaten wird verworfen <br> Angenommen, Sie müssen einen Teil der Sitzungsdaten verwerfen, jedoch andere wichtige Informationen beibehalten, z. B. den Anmeldestatus des Benutzers. Sie können bestimmte Sitzungsvariablen manuell löschen und dann Session_ABORT () aufrufen, damit Sie nicht gespeicherte Änderungen verwerfen können, während Sie die Sitzungsinformationen beibehalten, die Sie beibehalten möchten.
Codebeispiel:
<span><span><span class="hljs-title function_ invoke__">session_start</span></span><span>();
</span><span><span class="hljs-comment">// Löschen Sie eine bestimmte Sitzungsvariable</span></span><span>
</span><span><span class="hljs-keyword">unset</span></span><span>(</span><span><span class="hljs-variable">$_SESSION</span></span><span>[</span><span><span class="hljs-string">'cart'</span></span><span>]);
</span><span><span class="hljs-comment">// Änderungen der Sitzung verwerfen</span></span><span>
</span><span><span class="hljs-title function_ invoke__">session_abort</span></span><span>();
</span></span> Frage 1: Call Session_abort () zu früh
Wenn Session_abort () vor dem Betrieb der Sitzungsdaten aufgerufen wird, können Sitzungsdaten verloren gehen, wenn Sie diese ändern müssen. Wenn Sie Session_abort () aufrufen, müssen daher sichergestellt werden, dass alle Sitzungsdaten verarbeitet wurden, um zu vermeiden, dass nicht gerettete Inhalte verworfen werden.
Frage 2: Verlassen Sie sich weiterhin auf Sitzungsvariablen, nachdem Sie geklärt wurden <br> Wenn sich das Programm nach dem Aufrufen von Session_unset () immer noch auf der leeren Sitzungsvariablen beruht, kann dies zu undefinierten Verhaltensweisen oder Fehlern führen. Nach dem Aufrufen von Session_unset () müssen Sie sicherstellen, dass Sie nicht mehr von den leeren Sitzungsvariablen abhängen, da Sie sonst auf Nullwerte oder Fehler zugreifen können.
Die Funktionen von Session_abort () und Session_unset () in PHP sind unterschiedlich, daher müssen Sie vorsichtig sein, wenn Sie es gemeinsam verwenden. Session_unset () wird verwendet, um Variablen in der Sitzung zu löschen, während Session_abort () verwendet wird, um Änderungen an Sitzungsdaten zu verwerfen. Bei der Behandlung von Sitzungen sollte die Rolle jeder Funktion gemäß den tatsächlichen Bedürfnissen geklärt und angemessen verwendet werden, um potenzielle Fehler und unnötige Datenverluste zu vermeiden. Bei der Reinigung und Abwicklung von Sitzungsdaten besteht der beste Weg, zuerst die Sitzungsvariablen zu löschen, und rufen Sie Session_abort () auf und zerstören Sie letztendlich die gesamte Sitzung bei Bedarf.