2009-04-27 9 views
3

In meiner Web-Anwendung, die ich $_SESSIONS bin mit aber manchmal, wenn der Benutzer den Schlüssel Backspace trifft er bekommt:

Webseite

abgelaufen ist

Botschaft.

Warum passiert das? Was kann ich tun, um dies zu vermeiden?

Antwort

2

Es hat auch mit den Cache-Steueranweisungen zu tun, die an den Browser gesendet werden. Werfen Sie einen Blick auf http://de.php.net/manual/en/session.configuration.php#ini.session.cache-limiter und http://shiflett.org/articles/how-to-avoid-page-has-expired-warnings, um mehr über die Cache-Einstellungen zu erfahren.

http://shiflett.org/articles/how-to-avoid-page-has-expired-warnings:

Recap

To „Seite ist abgelaufen“ Warnungen gesetzt session.cache_limiter an private zu vermeiden, und stellen Sie sicher, dass jede Form der POST-Methode trägt zu einer Zwischenverarbeitung Seite, die den Benutzer auf eine umleitet andere URL

6

Dies hat nichts mit $_SESSION Variablen zu tun, es hat damit zu tun, dass Sie Informationen zwischen den Seiten mit der POST-Methode übertragen. Wenn Sie es vermeiden möchten, müssen Sie die GET-Methode anstelle von POST verwenden.

+1

Auch ist es nur etwas, das IE so weit wie ich weiß zeigt. – Matt

+1

Chrome auch glaube ich – Rob

+2

Firefox zeigt einen Dialog an, der Sie informiert, dass Sie Informationen erneut senden müssen, um diese Seite (oder etwas in diesen Zeilen) mit Optionen zum erneuten Senden oder Abbrechen anzuzeigen. – Powerlord

2

Wie Chad sagte, das ist das Ergebnis der Rückkehr zu einer Seite, die das Ergebnis einer POST-Anfrage war. Und wie die Kommentare sagten, kann man einen POST nicht einfach durch einen GET ersetzen, weil das aus verschiedenen Gründen eine schlechte Idee ist.

Sie können jedoch beide kombinieren: Lassen Sie die Anfrage ein POST sein, aber eine Location-Header-Redirect, die der Browser dann als GET ausführen wird. Für den Benutzer sieht das wie eine einzelne Operation aus, aber für den Browser wird es ein POST, gefolgt von einem GET, was dieses Problem effektiv beseitigt.