session_destroy
(PHP 4, PHP 5, PHP 7, PHP 8)
session_destroy — Löscht alle in einer Session registrierten Daten
Beschreibung
session_destroy() löscht alle in Verbindung mit der aktuellen Session stehenden Daten. Mit der Session zusammenhängende globale Variablen und das Session-Cookie werden nicht gelöscht. Um wieder Session-Variablen verwenden zu können, muss session_start() aufgerufen werden.
Hinweis: Normalerweise ist es nicht erforderlich session_destroy() aufzurufen. Statt die Session zu löchen, sollte das $_SESSION-Array bereinigt werden.
Um die Session komplett zu löschen, muss auch die Session-ID gelöscht werden. Wenn zum Verfolgen der Session ein Cookie benutzt wird (standardmäßige Einstellung), muss das Session-Cookie gelöscht werden. Dafür kann setcookie() verwendet werden.
Ist session.use_strict_mode aktiviert, dann ist es nicht nötig, veraltete Session-ID-Cookies zu löschen, da das Session-Modul dann kein Session-ID-Cookie akzeptiert, wenn keine zu dieser Session-ID gehörigen Daten vorhanden sind, so dass ein neues Session-ID-Cookie gesetzt würde. Das Aktivieren von session.use_strict_mode wird grundsätzlich empfohlen.
Das sofortige Löschen der Session kann zu unerwünschten Ergebnissen führen. Wenn es gleichzeitige Anfragen gibt, können andere Verbindungen, z. B. Anfragen von JavaScript und/oder Anfragen von URL-Links, plötzlich Session-Daten verlieren.
Das aktuelle Session-Modul akzeptiert zwar keine leeres Session-ID-Cookie, aber das sofortige Löschen der Session kann aufgrund einer Client- (Browser-) seitigen Race-Condition zu einem leeren Session-ID-Cookie führen. Dies würde dazu führen, dass der Client unnötig viele Session-IDs erzeugt.
Um diese zu vermeiden, müssen Sie den Löschzeitstempel auf $_SESSION setzen und den Zugriff zu einem späteren Zeitpunkt verweigern. Oder stellen Sie sicher, dass Ihre Anwendung keine gleichzeitige Anfragen hat. Dies gilt auch für session_regenerate_id().
Parameter-Liste
Diese Funktion besitzt keine Parameter.
Rückgabewerte
Gibt bei Erfolg true
zurück. Bei einem Fehler wird false
zurückgegeben.
Beispiele
Beispiel #1 Löschen einer Session mit $_SESSION
<?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();
?>
Anmerkungen
Hinweis:
Verwenden Sie session_unset() nur bei veraltetem Code, bei dem nicht $_SESSION benutzt wird.
Siehe auch
- session.use_strict_mode
- session_reset() - Re-initialize session array with original values
- session_regenerate_id() - Ersetzt die aktuelle Session-ID durch eine neu erzeugte
- unset() - Löschen einer angegebenen Variablen
- setcookie() - Sendet ein Cookie