Aus der php.net- Dokumentation:
session_destroy - Zerstört alle für eine Sitzung registrierten Daten
session_unset - Gibt alle Sitzungsvariablen frei
Meine dreiteilige Frage lautet:
Die beiden Funktionen scheinen sehr ähnlich zu sein.
Was ist wirklich der Unterschied zwischen den beiden?
Beide scheinen alle in einer Sitzung registrierten Variablen zu löschen. Zerstört einer von ihnen tatsächlich die Sitzung selbst? Wenn nicht, wie erreichen Sie dies (zerstören Sie die Sitzung selbst)?
Ist es richtig, dass keine der beiden Funktionen das Sitzungscookie auf dem Client löscht?
quelle
local $_SESSION variable instance vs session data in the session storage
. Wie ich weiß, gibt es 1000 solcher Leute wie mich, die Ihren Standpunkt nicht verstanden haben. Dankesession_destroy();
löscht die gesamte Sitzung.session_unset();
löscht nur die Variablen aus der Sitzung - Sitzung existiert noch. Nur Daten werden abgeschnitten.quelle
Beispiel :
Also werde ich verwenden:
quelle
session_unset();
tun Sie nichts, da Sie die Sitzung von noch verwenden können.$_SESSION["a"]
Was nützt es also?$_SESSION[a]
sollte sein$_SESSION['a']
und anders als das, was Sie gesagt haben, ist dies in Ihrem ersten Beispiel NICHT NULLsession_unset()
löscht die$_SESSION
Variable (wie inarray()
), berührt jedoch nicht die Sitzungsdatei. Aber wenn das Drehbuch endet; Der Status von$_SESSION
wird in die Datei geschrieben. Dann wird die Datei gelöscht, aber nicht gelöscht. Wenn Siesession_destroy()
es nicht berühren$_SESSION
(Verwendungvar_dump($_SESSION)
nachsession_destroy()
), aber die Session - Datei löschen, so dass , wenn Skript beendet wird es keine Datei sein , den Zustand des zu schreiben$_SESSION
.quelle
session_destroy()
löscht die Sitzung nach dem Verschieben der Seite undsession_unset()
löscht die Sitzung, wenn der Code ausgeführt wird.quelle
Ich habe versucht zu
session_unset($_SESSION['session_name'])
denken, dass nur bestimmte oder individuelle / einzelne Sitzungsnamen nicht festgelegt werden. Mit usingsession_unset($_SESSION['session_name'])
werden jedoch nur alle Sitzungsnamen deaktiviert. Der richtige Code ist nur,unset($_SESSION['session_name'])
wenn Sie einen einzelnen Sitzungsnamen deaktivieren möchten.quelle
session_start (); #it erstellt ein virtuelles Array (assoziativ) im Echtzeitspeicher des Browsers
zwei Artikel hinzugefügt
test1
test2
test3
Testen Sie Block 1, 2 oder 3 einzeln, indem Sie andere auskommentieren
quelle
Ich denke, session_destroy () und session_unset () sollten gleichzeitig verwendet werden, um sicherzustellen, dass Sitzungsdaten sicher gelöscht werden.
quelle
session_unset()
danachsession_destroy()
wäre sinnlos. Verwendensession_unset()
Sie diese Option, um alle Schlüssel und Werte aus dem Superglobal $ _SESSION zu löschen, oder verwenden Sie diese Option,session_destroy()
um die gesamte Sitzung zu löschen. Verwenden Sie nicht beide, nur um "sicherzugehen", sondern vertrauen Sie darauf, dass die Funktion ihre Arbeit erledigt.session_destroy()
die sess superglobal var erst, wenn die aktuelle Seite verlassen wird.