Hallo..
Ich will mit folgendem PHP-Skript mein Session-Cookie löschen, aber nach dem Logout (nach diesem Code) finde ich immer noch das PHPSESSID-Cookie mit exakt der gleichen Session-ID in der Firefox Cookie-"Ansicht" wieder.
(Ich habe den Original-Ausschnitt des Beispieles von php.net genommen)
// 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();
das sieht irgendwie auch gut aus. aber klappt irgendwie nicht.
gibt es eine methode, irgendwie nachzusehen, was da genau passiert, bzw. wo der fehler liegen könnte?
es gibt keine Fehlermeldung, alles sieht aus als würde es funktionieren.
nach dem logout, leitet ein header auf die verweisende seite (referrer) weiter, wo wieder eine session gestartet wird.
aber die müsste doch zumindest eine andere session-id haben dachte ich (?) (cookie behält die gleiche id)
danke.
mfg, h.
Programmieren - alles kontrollieren 4.941 Themen, 20.708 Beiträge
diese funktion löscht (bei mir) den cookie (nachdem ich nachgesehen habe wie der heißt und ewigem gegoogle)
setcookie("PHPSESSID","",time()-3600,"/");
(komisch dass das offizielle Beispiel von php.net (bei mir) nicht geht.) :(
(ubuntu 9.10, FF 3.5.8)
mfg, h.
hi hansapark
Ich muss ganz ehrlich gestehen, mit der offiziellen Sessionverwaltung von php kenne ich mich nicht wirklich aus, aber ich würde dir empfehlen, deine eigenen sessionfunktionen zu schreiben.
Grade die PHP Sessions sind recht leicht zu exploiten, wenn man beim programmieren nicht aufpasst, und der name des cookies(PHPSESSID) ist ja schon sehr verräterisch.
Im prinzip hat es sich bei mir bewährt, hier eigene funktionen zu schreiben, und die jeweilige Session als
md5(md5(username).md5(passwordhash).md5(time())); zu definieren. Auf diese weise ist es extrem unwahrscheinlich, dass zwei gleiche sessions existieren, und es kann dir auch keiner mit cross-cookie placing dazwischenfunken(es ist unter gewissen umständen möglich, von extern gültige sessions zu generieren, sehr aufwändig aber möglich!)
hallo.
ja, da hab schonmal von gelesen. mir ist bis jetzt nur nicht klar gewesen, wo man da ansetzen muss, um die SID selber zusammenzubauen, da das alles automatisch passiert (bin auch erst ca. 1/2 jahr mit php am herumprobieren).
werde mich aber mal kundig machen.
ps. habe auch mal gelesen, dass md5 wohl nicht mehr optimal sein soll.
lieber sha2, weiß aber nicht inwieweit dass auf die session geschichte zutrifft.
mfg, h.