Session beenden mit session destroy() klappt nicht so wirklich
Hallo!
Ich habe folgendes Problem mit Sessions:
Beispielprojekt: Onlineshop.
Sessions werden eingesetzt, der Kunde kauft ein und schliesst die Bestellung ab.
Ich möchte nun erreichen, dass dann die Session komplett "zerstört" wird.
Dazu führe ich den Befehl "session_destroy();" aus.
Das Problem ist nun offenbar, dass die Session-ID in einem Cookie beim Client gespeichert wird.
Wenn man nach Bestellabschluß (also auch nach session_destroy();) dann auf den Button "Warenkorb anzeigen" klickt,
wird der Warenkorb wieder samt Inhalt angezeigt (Dieser orientiert sich nach der Session-ID). Er soll aber nach Bestellabschluss natürlich leer sein.
Was läuft da falsch? Wird bei session_destroy(); nicht automatisch auch das Cookie gelöscht?
Oder muss man das noch explizit nachholen? Falls ja: wie?
Danke & Gruß,
Colt Seavers
Ich habe folgendes Problem mit Sessions:
Beispielprojekt: Onlineshop.
Sessions werden eingesetzt, der Kunde kauft ein und schliesst die Bestellung ab.
Ich möchte nun erreichen, dass dann die Session komplett "zerstört" wird.
Dazu führe ich den Befehl "session_destroy();" aus.
Das Problem ist nun offenbar, dass die Session-ID in einem Cookie beim Client gespeichert wird.
Wenn man nach Bestellabschluß (also auch nach session_destroy();) dann auf den Button "Warenkorb anzeigen" klickt,
wird der Warenkorb wieder samt Inhalt angezeigt (Dieser orientiert sich nach der Session-ID). Er soll aber nach Bestellabschluss natürlich leer sein.
Was läuft da falsch? Wird bei session_destroy(); nicht automatisch auch das Cookie gelöscht?
Oder muss man das noch explizit nachholen? Falls ja: wie?
Danke & Gruß,
Colt Seavers
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 134341
Url: https://administrator.de/forum/session-beenden-mit-session-destroy-klappt-nicht-so-wirklich-134341.html
Ausgedruckt am: 05.04.2025 um 14:04 Uhr
6 Kommentare
Neuester Kommentar
Was das Cookie auf dem Client macht ist doch vollkommen unerheblich.
PHPs interne Session-Implementation speichert auf dem Client nur eine Session-ID, alle Dateien dazu liegt auf dem Server in einer Datei mit dem Namen der ID.
Ich würde aber mal sagen, du hast hier ein tiefergreifendes Problem!
Das Cookie kannst du mit
löschen...
PHPs interne Session-Implementation speichert auf dem Client nur eine Session-ID, alle Dateien dazu liegt auf dem Server in einer Datei mit dem Namen der ID.
session_destroy
löscht alle Daten innerhalb einer Session (nicht die Session selber).Ich würde aber mal sagen, du hast hier ein tiefergreifendes Problem!
Das Cookie kannst du mit
1
setcookie(session_name(),false);
Ich find das wird hier anders erklärt:
Darum nimmt man auch immer die offizielle Doku: http://de.php.net/session_destroy
Aber egal, was von beiden stimmt:
Stimmt, du hast ein anderes Problem.
Darum aktivierst du erstmal die Fehleransicht:
1
2
2
ini_set('display_errors','On');
error_reporting(E_ALL|E_STRICT);

Hallo,
warum nutzt du nicht den expire Parameter von setcookie?
Wenn dir das zu statisch ist, kannst du auch den Cookie aller paar Seitenklicks neu setzen. So kannst du sicher gehen, dass niemand ausgeloggt wird, der sich schon seit Stunden in deinem System befindet.
Gruß
dante!
PS: Header Manipulationen müssen immer vor dem ersten Output passieren, also möglichst am Code Anfang.
warum nutzt du nicht den expire Parameter von setcookie?
Wenn dir das zu statisch ist, kannst du auch den Cookie aller paar Seitenklicks neu setzen. So kannst du sicher gehen, dass niemand ausgeloggt wird, der sich schon seit Stunden in deinem System befindet.
Gruß
dante!
PS: Header Manipulationen müssen immer vor dem ersten Output passieren, also möglichst am Code Anfang.