
Tony Stark
Ich versuche, mich korrekt von einem Admin-Benutzer abzumelden. Hier meine Funktion:
function logout()
{
$_SESSION = array(); //destroy all of the session variables
if (ini_get("session.use_cookies")) {
$params = session_get_cookie_params();
setcookie(session_name(), '', time() - 42000,
$params["path"], $params["domain"],
$params["secure"], $params["httponly"]
);
}
session_destroy();
}
Sobald ich das Passwort authentifiziert habe, stelle ich die Sitzung grundsätzlich als gültig ein (insgesamt nur 1 Benutzer). Wenn der Administrator jetzt auf Abmelden klickt, möchte ich die aktuelle Sitzung zerstören und auch das Cookie zerstören, damit sie nicht einfach mit dem gespeicherten Sitzungscookie im Browser zur Admin-Seite zurückkehren können. aber mein Code funktioniert nicht. Ich klicke auf Abmelden und kann direkt zur Admin-Seite zurückkehren. Wenn ich jedoch meine Cookies lösche, ist die Funktionalität perfekt. Was ist also falsch an der Cookie-Löschfunktion hier?

MANCHUCK
Wenn Sie wirklich alle Grundlagen abdecken möchten, versuchen Sie Folgendes:
setcookie (session_id(), "", time() - 3600);
session_destroy();
session_write_close();
Dies sollte den weiteren Zugriff auf die Sitzungsdaten für den Rest der PHP-Ausführung verhindern. Der Browser zeigt möglicherweise immer noch an, dass das Cookie gesetzt wird, aber der Super $_SESSION bleibt leer

Pekka
Vielleicht ist Ihr Problem nicht das Cookie, sondern der Browser, der eine zwischengespeicherte Version Ihrer Admin-Seite anzeigt. Könnte das sein? Wenn es verschwindet, wenn Sie schlagen F5, das ist es wohl. Dies kann sortiert werden, indem das Recht gesetzt wird cache-control
Kopfzeilen.
Kasse diese SO-Frage zu der Frage, wie man das Caching einstellt. Die Frage ist genau umgekehrt (Browser zum Cachen zwingen), aber Sie werden herausfinden, was Sie ändern müssen, um das Caching zu deaktivieren.

Bärenfreund
Nur ein Tipp für andere, die Probleme mit dem Ablaufen von Sitzungscookies haben:
PHP – warum kann ich dieses Session-ID-Cookie nicht löschen?
Verwenden Sie immer session_get_cookie_params() wie in der Antwort auf die Frage im obigen Link.
10054300cookie-checkWie zerstört man das Session-Cookie richtig mit PHP?yes