session_destroy

(PHP 4, PHP 5, PHP 7)

session_destroyLöscht alle in einer Session registrierten Daten

Beschreibung

session_destroy ( ) : bool

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 dessen 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.

Warnung

Immediate session deletion may cause unwanted results. When there is concurrent requests, other connections may see sudden session data loss. e.g. Requests from JavaScript and/or requests from URL links.

Although current session module does not accept empty session ID cookie, but immediate session deletion may result in empty session ID cookie due to client(browser) side race condidtion. This will result that the client creates many session ID needlessly.

To avoid these, you must set deletion time-stamp to $_SESSION and reject access while later. Or make sure your application does not have concurrent requests. This applies to session_regenerate_id() also.

Rückgabewerte

Gibt bei Erfolg TRUE zurück. Im Fehlerfall 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