Signatur
Beschreibung
session_unset() entfernt alle Variablen, die in der aktuellen Session gespeichert sind, indem es das superglobale Array $_SESSION vollständig leert. Die Session selbst bleibt dabei aktiv – die Session-ID sowie die zugehörige Session-Datei bleiben erhalten. Der Effekt entspricht dem Aufruf von $_SESSION = [];, weshalb letzterer Ansatz in modernem Code oft bevorzugt wird.
Die Funktion ist besonders beim Abmelden eines Benutzers nützlich, wenn man sicherstellen möchte, dass sämtliche Sitzungsdaten (z. B. Benutzer-ID, Berechtigungen, Warenkorb-Inhalt) sofort entfernt werden. Soll die Session darüber hinaus vollständig vernichtet werden (z. B. beim Logout), muss anschließend session_destroy() aufgerufen werden.
Zu beachten ist, dass session_unset() nur dann sinnvoll einsetzbar ist, wenn vorher session_start() aufgerufen wurde. Andernfalls hat die Funktion keinen Effekt, da kein aktives Session-Kontext existiert.
Ab PHP 8.0.0 gibt die Funktion immer true zurück; in älteren Versionen war der Rückgabewert void.
Rückgabewert
true zurück. In PHP 7.x und älter ist der Rückgabewert void.Beispiele
Benutzer-Logout mit vollständiger Session-Bereinigung
<?php
session_start();
// Session-Variablen vor dem Logout
$_SESSION['user_id'] = 42;
$_SESSION['username'] = 'alice';
$_SESSION['role'] = 'admin';
echo 'Vor dem Logout: ' . count($_SESSION) . ' Variablen' . PHP_EOL;
// Alle Session-Variablen löschen
session_unset();
echo 'Nach session_unset(): ' . count($_SESSION) . ' Variablen' . PHP_EOL;
// Session-Datei und Session-Cookie ebenfalls entfernen
if (ini_get('session.use_cookies')) {
$params = session_get_cookie_params();
setcookie(
session_name(),
'',
time() - 42000,
$params['path'],
$params['domain'],
$params['secure'],
$params['httponly']
);
}
session_destroy();
echo 'Session vollständig beendet.' . PHP_EOL;
Äquivalenz von session_unset() und $_SESSION = []
<?php
session_start();
$_SESSION['token'] = 'abc123';
$_SESSION['lang'] = 'de';
// Methode 1: session_unset()
session_unset();
var_dump($_SESSION); // array(0) {}
// Session neu befüllen
$_SESSION['token'] = 'xyz789';
$_SESSION['lang'] = 'en';
// Methode 2: moderne Alternative mit identischem Ergebnis
$_SESSION = [];
var_dump($_SESSION); // array(0) {}
// Wichtig · Fallstricke
Sicherheitshinweis beim Logout: session_unset() allein reicht für einen sicheren Logout nicht aus. Die Session-Datei auf dem Server bleibt bestehen, und ein Angreifer mit der alten Session-ID könnte die leere Session weiter nutzen. Rufe daher immer zusätzlich session_destroy() auf und entferne das Session-Cookie auf dem Client.
Veraltete Nutzung: In älteren PHP-Versionen (vor PHP 4.0) wurde oft session_unregister() für einzelne Variablen verwendet. Ab PHP 5.4 ist diese Funktion entfernt. Verwende statt session_unset() für eine einzelne Variable einfach unset($_SESSION['key']).
Keine aktive Session: Wenn session_start() nicht vorher aufgerufen wurde, hat session_unset() keinen Effekt und erzeugt in manchen Konfigurationen eine Warnung.