Ich versuche, eine Abmeldungsfunktion für eine Web-App zu beheben. Wenn Sie angemeldet sind, enthält die App mehrere Cookies für die Domain. Hier ist die aktuelle Abmeldeprozedur:PHP - Warum kann ich diesen Session-ID-Cookie nicht loswerden?
- Sie auf einen Link klicken, die Sie auf eine Logout-Seite sendet
- Die Logout-Seite läuft eine Funktion, die
session_destroy()
nennt und auch durchläuft alle Cookies für die Domäne und setzt sie auf in der Vergangenheit ablaufen (siehe Code unten) - Die Abmeldeseite wird dann auf eine Anmeldeseite umgeleitet, bei der es sich um reines HTML handelt.
Am Ende dieses Prozesses werden alle anderen Cookies sind nicht gesetzt, aber die PHPSESSID
Cookie ist noch da, hat den gleichen Wert, und ist immer noch am Ende der Sitzung auslauf.
Was fehlt mir hier?
Hier ist die Abmeldefunktion ich oben erwähnt:
function log_out_current_user() {
// Destroy the session
if (isset($_SESSION)) {
session_destroy();
}
// Expire all of the user's cookies for this domain:
// give them a blank value and set them to expire
// in the past
if (isset($_SERVER['HTTP_COOKIE'])) {
$cookies = explode(';', $_SERVER['HTTP_COOKIE']);
foreach($cookies as $cookie) {
$parts = explode('=', $cookie);
$name = trim($parts[0]);
setcookie($name, '', time()-1000);
setcookie($name, '', time()-1000, '/');
}
// Explicitly unset this cookie - shouldn't be redundant,
// but it doesn't hurt to try
setcookie('PHPSESSID', '', time()-1000);
}
}