Wie zerstört man das Session-Cookie richtig mit PHP?

Lesezeit: 2 Minuten

Wie zerstort man das Session Cookie richtig mit PHP
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?

Wie zerstort man das Session Cookie richtig mit PHP
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

  • Meiner Meinung nach solltest du schreiben session_name() (das entspricht PHPSESSID) in der ersten Zeile.

    Benutzer669677

    29. November 2013 um 12:58 Uhr


Wie zerstort man das Session Cookie richtig mit PHP
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.

  • Ok, das macht Sinn, aber warum kann ich immer noch direkt auf die Admin-Seite zugreifen, selbst nachdem ich die Sitzung zerstört habe??

    – Tony Stark

    11. Februar 2010 um 2:12 Uhr

  • Egal, ich glaube, ich habe es herausgefunden – ich habe session_start() auf meiner Abmeldeseite nicht aufgerufen (der Abmeldetext verweist auf eine Abmeldeseite, die meine obige Funktion aufruft)

    – Tony Stark

    11. Februar 2010 um 2:15 Uhr

  • Es wäre immer noch klug, das Cookie zu entfernen, um die Cache-Fähigkeit anonymer Inhalte mit Caches wie Varnish zu erhöhen. Wenn der Browser weiterhin ein Cookie sendet, wird Varnish die Antwort nicht zwischenspeichern, selbst wenn Sie für jeden Besucher genau dieselbe Antwort generieren.

    – Martijn Heemels

    30. Juni 2011 um 8:28 Uhr

  • Das zugrunde liegende Konzept des OP ist nicht fehlerhaft. Er zeigt die Lehrbuchmethode zum Beenden einer Anmeldesitzung, wie sie im PHP-Handbuch dokumentiert ist.

    – Nilpo

    31. Mai 2016 um 7:30 Uhr

  • @Nilpo in der Tat! Hab das bisschen rausbearbeitet.

    – Pekka

    31. Mai 2016 um 7:49 Uhr

1647910448 871 Wie zerstort man das Session Cookie richtig mit PHP
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.

1005430cookie-checkWie zerstört man das Session-Cookie richtig mit PHP?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy