Hallo,
im PHP Manual wird im Kapitel session_destroy() beim ersten Beispiel aufgezeigt, wie man eine Session endgültig löscht:
<?php
// Initialisierung der Session.
// Wenn Sie session_name("irgendwas") verwenden, vergessen Sie es
// jetzt nicht!
session_start();
// Löschen aller Session-Variablen.
$_SESSION = array();
// Falls die Session gelöscht werden soll, löschen Sie auch das
// Session-Cookie.
// Achtung: Damit wird die Session gelöscht, nicht nur die Session-Daten!
if (ini_get("session.use_cookies")) {
$params = session_get_cookie_params();
setcookie(session_name(), '', time() - 42000, $params["path"],
$params["domain"], $params["secure"], $params["httponly"]
);
}
// Zum Schluß, löschen der Session.
session_destroy();
?>
Wenn ich das 1:1 übertrage und eine mögliche Session danach mit var_dump($_SESSION); überprüfe, bekomme ich noch immer ein leeres Arry zurück. Die Session existiert also noch:
array(0) { } zurück.
Erst, wenn ich zusätzlich noch ein unset($_SESSION); hinzufüge, wird mir bei einer Überprüfung mit var_dump($_SESSION); mitgeteilt, dass es keine Globale Sessionvariable gibt:
Notice: Undefined variable: _SESSION in ... on line ... NULL
Diese Meldung würde ich eigentlich schon erwarten, ohne dass ich noch das unset($_SESSION); hinzufügen muss. Im Beispielcode steht als Kommentar explizit: "Achtung: Damit wird die Session gelöscht, nicht nur die Session-Daten!"
Auch die Aussage "Um wieder Session-Variablen verwenden zu können, muss session_start() aufgerufen werden." in der Beschreibung der Funktion kann ich so nicht nachvollziehen. Wenn ich an den Code des Beispiels statt dem unset($_SESSION); ein $_SESSION['bar'] = 'foo'; anhänge (ohne einem session_start(); !!!), dann funktioniert das wunderbar und kann anschließend mit var_dump($_SESSION); auch ausgegeben werden.
Kann mir bitte wer sagen, wieso das so ist und wo da mein Verständnisproblem liegt? Und vorallem: Da kann ich mir den ganzen Hokuspokus des Beispielcodes ja gleich sparen und mit unset($_SESSION); eine komplette Session kurz und knapp eliminieren? Oder nicht?
Mit lieben Grüßen
Melvin Cowznofski
What – me worry?