Start · Sprachen · PHP · Referenz · session_reset

session_reset

Funktion

Setzt alle Variablen der aktuellen Session auf die ursprünglich gelesenen Werte aus dem Session-Speicher zurück.

seit PHP 5.6.0 Kategorie: http

Signatur

session_reset(): bool

Beschreibung

session_reset() verwirft alle Änderungen, die während des aktuellen Requests an den Session-Variablen vorgenommen wurden, und stellt den Zustand von $_SESSION so wieder her, wie er beim Start der Session (d. h. nach dem letzten Speichern oder Lesen) war. Die Funktion greift dabei nicht auf den Session-Speicher zu, sondern verwendet den beim Session-Start intern gecachten Original-Zustand.

Dies ist besonders nützlich, wenn innerhalb eines Requests Änderungen an Session-Daten vorgenommen wurden, die aus irgendeinem Grund (z. B. Validierungsfehler, Ausnahme im Anwendungsfluss) rückgängig gemacht werden sollen – ohne die Session neu starten oder komplett zerstören zu müssen.

Im Gegensatz zu session_unset(), das alle Session-Variablen leert, stellt session_reset() den ursprünglichen Inhalt wieder her. Die Session selbst bleibt aktiv und wird nach dem Request normal gespeichert, sofern keine weiteren Änderungen vorgenommen werden.

Die Funktion gibt true zurück, wenn die Session aktiv ist und der Reset erfolgreich war, andernfalls false. Eine aktive Session (gestartet via session_start()) ist Voraussetzung für den Aufruf.

Rückgabewert

Typ
bool
Beschreibung
Gibt true zurück, wenn die Session aktiv war und die Variablen erfolgreich zurückgesetzt wurden. Gibt false zurück, wenn keine aktive Session vorhanden ist.

Beispiele

Änderungen an Session-Variablen rückgängig machen

<?php
session_start();

// Angenommen, die Session enthält bereits: $_SESSION['user'] = 'Alice';
$_SESSION['user'] = 'Alice';

// Im Laufe des Requests wird die Variable geändert
$_SESSION['user'] = 'Bob';
echo $_SESSION['user']; // Ausgabe: Bob

// Etwas läuft schief – Änderungen rückgängig machen
$result = session_reset();
echo $_SESSION['user']; // Ausgabe: Alice
var_dump($result);      // bool(true)
Bob Alice bool(true)

Fehlerbehandlung: Reset ohne aktive Session

<?php
// Keine session_start() aufgerufen
$result = session_reset();
var_dump($result); // bool(false) — keine aktive Session
bool(false)

Einsatz im Formular-Validierungsfluss

<?php
session_start();

// Original-Warenkorbinhalt wird geladen
// $_SESSION['cart'] = ['item1', 'item2']; (aus vorherigem Request)

// Versuch, den Warenkorb zu aktualisieren
$_SESSION['cart'][] = 'item3';

// Validierung schlägt fehl
$validationFailed = true;

if ($validationFailed) {
    // Änderungen verwerfen, Originalzustand wiederherstellen
    session_reset();
    echo 'Änderungen wurden verworfen.';
    // $_SESSION['cart'] enthält wieder nur ['item1', 'item2']
}
Änderungen wurden verworfen.

// Wichtig · Fallstricke

Voraussetzung: Die Session muss durch session_start() gestartet worden sein, bevor session_reset() aufgerufen werden kann. Ein Aufruf ohne aktive Session gibt false zurück und hat keine Wirkung.

Abgrenzung zu ähnlichen Funktionen: session_unset() leert $_SESSION vollständig (setzt es auf ein leeres Array), während session_reset() den ursprünglich gelesenen Inhalt wiederherstellt. session_destroy() hingegen beendet die Session komplett und entfernt alle zugehörigen Daten aus dem Speicher.

Custom Session Handler: Bei Verwendung eines eigenen Session-Handlers (session_set_save_handler()) sollte sichergestellt sein, dass der interne Zustand beim Reset korrekt verwaltet wird, da session_reset() den gecachten Zustand des Handlers nutzt.