6 Stimmen

Wie löscht man eine PHP-Sitzung?

Es ist möglich, dass ich die PHP-Sitzungen nicht richtig lösche, wenn sich der Benutzer abmeldet. Mir ist aufgefallen, dass sich die Sitzungs-ID nicht ändert, wenn ich mich abmelde und wieder anmelde, ohne den Browser zu schließen, aber wenn ich mich abmelde, das Browserfenster schließe, ein neues öffne und mich anmelde, ist die Sitzungs-ID anders. Muss ich etwas anders machen, oder ist das ein normales Verhalten? Ich verwende seit drei Jahren dasselbe Verfahren, aber vor kurzem ist etwas passiert, das mich auf den Gedanken gebracht hat, dass vielleicht Ich muss etwas anderes machen.

So gehe ich vor, wenn jemand auf Abmelden klickt.

<?php

session_start();

if( isSet($_SESSION['FacID']) )
    $facID = $_SESSION['FacID'];    //Want to re-instate this after we destroy the session.

unset($_SESSION);
session_destroy();

if( isSet($_SESSION['FacID']) )
    $_SESSION['FacID'] = $facID;

?>

4voto

zalew Punkte 9965

Wenn Sie das Bedürfnis haben, eine neue ID zu erzwingen http://pl.php.net/manual/en/function.session-regenerate-id.php

Und zu Ihrer Frage, aus dem Handbuch:

session_destroy() vernichtet alle Daten, die mit der aktuellen Sitzung. Sie löscht keine der globalen Variablen, die mit der Session zugeordneten globalen Variablen oder das Session-Cookie. Um die Sitzungsvariablen wieder zu verwenden, muss session_start() aufgerufen werden.

Um die Sitzung zu beenden ganz zu beenden, wie den Benutzer abzumelden, muss die Sitzungs-ID ebenfalls gelöscht werden. Wenn ein Cookie verwendet wird, um die Sitzungs-ID weitergegeben wird (Standardverhalten), dann muss das Session-Cookie gelöscht werden. setcookie() kann dafür verwendet werden.

1voto

Nick Whaley Punkte 2577

Ihre Sitzung wird zerstört.

PHP erzeugt nur dann eine Session-ID, wenn der Browser keine angibt. Solange die Sitzung gelöscht wurde, gibt es damit keine Probleme.

0 Stimmen

Die Tatsache, dass dieselbe Sitzungs-ID (wenn der Browser nicht geschlossen ist) für mehrere Benutzer verwendet wird, ist also nicht wirklich ein Problem?

0 Stimmen

Da es eine begrenzte Anzahl von Sitzungskennungen gibt, wird JEDE Kennung für mehrere Benutzer verwendet. Ihre Wiederverwendung ist kein Problem.

0voto

strager Punkte 86191

Was hat es mit dem massiven Speichern und Zerstören auf sich? Einfach session_start und setzen Sie Ihre Variablen. Sie brauchen sie nicht zu zerstören und dann zurückzusetzen!

Ihr "Problem" mit dem Browser besteht darin, dass Ihr Browser beim Schließen des Browserfensters den Cookie löscht, den PHP ihm sendet, damit er die Sitzungs-ID kennt. Dies ist eine Option des Browsers und kann auf der Serverseite nicht geändert werden (es sei denn, Sie nutzen dies aus). Sie kann mit einigen Methoden umgangen werden, aber das ist wahrscheinlich nicht die beste Option.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X