PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : PHP: Session zerstören will nicht


Gast
2010-05-23, 12:33:34
Hallo

Bevor ich lange um den Brei rede: Ich habe testweise 2 Skripte gebaut:

1.

session_start();
echo session_id();

2.

session_start();
session_destroy();


Rufe ich das erste Skript auf, bekomme ich eine Session-ID ausgegeben. Rufe ich es erneut auf, bekomme ich wie geplant die gleiche ID zurück. Jetzt hätte ich aber vermutet, wenn ich zwischendurch das zweite Skript aufrufe gibt es bei einem erneuten Aufruf des ersten Skripts eine neue ID. Ich bekomme aber nach wie vor die alte ID zurück. Woran liegt das?

Ich übergebe die URL übrigens nicht explizit, folglich werden intern wohl Cookies benutzt. Mein Plan war es eigentlich, dass wenn die Session-ID auf dem Server nicht mehr existiert, das Cookie somit wertlos wird.

Wie erreiche ich mein Ziel?

Danke!

DanMan
2010-05-23, 12:47:48
http://de.php.net/manual/en/function.session-destroy.php

Da steht was du tun musst bzw warum es nicht funktioniert. Gleich ganz oben. Kurz: du musst z.B. auch das Cookie löschen.

Gast
2010-05-23, 13:05:46
Vielen Dank. Ich habe zuerst das Cookie nicht auf meinem Rechner gefunden und wurde noch von der Aussage "Session-Cookies sind Browsercookies, die findet man nicht auf der HDD" zu dem Entschluss geführt, mir setcookie garnicht erst anzugucken. Danke dafür.

Würde da ein simples setcookie(session_name(), ''); ausreichen?
Das Beispiel "Example #1 Destroying a session" auf php.net finde ich etwas arg kompliziert, oder ist das der gängige Weg?

DanMan
2010-05-23, 14:47:01
Probieren geht über studieren. :)

Letztendlich ist der Vorgang ja der, dass du das vorhandene Cookie mit einem neuen, aber mit abgelaufenem Verfallsdatum, überschreibst. Darum muss die Domain und Pfad wohl übereinstimmen. K.A. ob das bei dir mit den Standardwerten übereinstimmt.

Gast
2010-05-23, 16:56:35
Jop, das war natürlich nicht der Fall. Verwende jetzt doch das Example, die Lösung eines Users in den Comments funktioniert aber auch wenn mans kurz will:
setcookie(session_name(), session_id(), 1, '/');

Danke nochmals