2016-04-13 16 views
3

session_destroy() zerstört Sitzungsdaten, deaktiviert jedoch keine der globalen Variablen, die einer Sitzung zugeordnet sind, oder deaktiviert den Sitzungscookie.Warum sollten wir Sitzung in PHP zerstören?

Warum sollten wir Sitzung zerstören?

Können wir eine Sitzung am Ende der Seite jedes Mal zerstören, wenn die Sitzung am Anfang der Seite beginnt und die gleiche Funktionalität bietet, ohne sie zu zerstören?

+0

Evtl. Duplikate von [Was Session Destroy in PHP tut] (http://stackoverflow.com/questions/18549211/what-does-session-destroy-do-in-php) –

+0

'session_destroy' einfach nicht mach seine beabsichtigte Arbeit sehr gut, [versuche diesen Ansatz] (http://stackoverflow.com/questions/3948230/best-way-to-completely-destroy-a-session-even-if-the-browser-is-not -geschlossen). – Martin

+1

Nach der Verwendung von 'session_destroy()' wird das Sitzungscookie entfernt und die Sitzung wird nicht mehr auf dem Server gespeichert. Die Werte in '$ _SESSION' sind möglicherweise noch verfügbar, aber beim nächsten Laden der Seite werden sie nicht angezeigt. – Daan

Antwort

5

session_destroy() löscht die Sitzungsdatei (wenn Dateispeicher verwendet wird). Andernfalls befindet sich die Sitzungsdatei auf dem Server, bis die Speicherbereinigung sie löscht. Wenn Sie also sicherstellen möchten, dass die gespeicherten Sitzungsdaten vom Server entfernt werden, müssen Sie session_destroy() aufrufen.

Nicht auf jeder Seite anrufen! Erst nachdem sich der Benutzer abmeldet und Sie die gespeicherten Informationen nicht mehr benötigen.

+0

Ist es möglich, die Daten aus der Sitzungsdatei zu hacken? Selbst wenn wir session_destroy nicht löschen, sind unsere Daten sicher, indem wir nur Sitzungsvariablen löschen. – user6181297

0

Ihr richtiger Ansatz sollte session_destroy ausführen und dann die Seite neu laden, um zu erzwingen, dass die sitzungsändernden Aktionen (z. B. Löschen von Cookies) funktionieren und die Sitzungsdaten in PHP erneut geladen und erneuert werden.

Vor-Sitzung ausgeführt zerstören sollten Sie "manuell" reinigen Sie die Sitzung auch gut so: bitte

<?php 
session_start(); 

if(count)$_SESSION > 0) { 
// Or some other more specific cursory check if the session is populated 
    $_SESSION = array("","","",""); 
    session_destroy(); 
    header("Location: thispage.php"); 
    exit; 
    } 

... 
Page continues.... 

auch Referenz this answer, wie Session-Cookies auf dem Client-Browser zu entfernen.

Verwandte Themen