PHP Problem mit 'header' (Page reload springt zu vorheriger Seite)

stna1981

Commander
Dabei seit
März 2007
Beiträge
2.474
Hallo,

ich versuche gerade, eine Timeout-Funktion in PHP zu implementieren, die nach Ablauf einer gewissen inaktiven Zeit auf eine Fehlerseite springt. Das ganze sieht etwa so aus (wenn die Timeout-Bedingung erfüllt ist):

session_destroy();
header("Location: error.php?error=timeout");
exit;

Das funktioniert auch soweit, nur wenn ich dann auf der nachfolgenden Seite "F5" drücke, also einen Page Reload durchführe, dann wird wieder die vorherige Seite angezeigt, wie kann das sein?

Viele Grüße,
Stefan
 
hmm... probier doch mal bitte

PHP:
header("HTTP/1.1 301 Moved Permanently");
header("Location: error.php?error=timeout");
exit;

und sag mir obs funzt, sorry hab grad keinen apache zur hand mit dem ichs ausprobieren könnte...
 
Das hat nicht geholfen. Allerdings ist mir aufgefallen, dass das Problem nur im FF 3 auftritt, im IE 7 und Opera 8.5 tritt der Effekt nicht auf... *verwirrt* hab jetzt auch mal absolute Pfade gesetzt, hat auch nicht geholfen.
 
Installier dir mal das "Live Header" - Plugin für den Firefox.
Damit kannst sehen wohin du weitergeleitet wirst.
Vielleicht hast du ja irgendwo eine Weiterleitung zurück auf die alte Seite.
 
jepp, das ist so, denn:

Firefox speichert die laufenden Sessions in einem internen cache ab und hält diese ab leben.

A besten du killst den Session parameter,welcher sagt ob ein User eingeloggt ist oder nicht:

z.B.:
User eingeloggt:
$_SESSION['status'] = "loggedin"

Leer machen:
$_SESSION['status'] = "";

jetzt per header("Location: error.php?bla=timeout");

und gut iss!
 
Bzw, um es schöner zu machen, kann man die Variable auch mit unset löschen (und zB überhaupt beim initialisieren nur auf true setzen und per isset prüfen, dann erspart man sich das zuweisen von iwelchen Werten)

Prinzipiell find ich es besser, Sessions immer so zu handhaben / kontrollieren, da man so am effektivsten Session "Bugs" (wie eben im FF3) vorbeugen kann.



so long
Renegade
 
Dass ein session_destroy() im FF nichts bewirkt, ist mir inzwischen auch schon aufgefallen, ich umgehe das über ein $_SESSION = array().

Das Problem ist aber, dass ich nach wie vor nicht verstehe, wieso der FF (und nur der) zurück zur vorherigen Seite springt, anstatt die error.php zu refreshen. Denn für die error.php ist es egal, ob es eine Session gibt und in welchem Zustand diese ist. Die error.php gibt einfach eine Fehlermeldung aus, mehr nicht. Wenn diese angezeigt wird und ich F5 drücke, sollte sich nichts ändern. Aber der FF springt zurück zu der Seite, die per header auf die error.php weitergeleitet hat...

Kann mir das irgendjemand erklären?
 
Hast du dir mal Http Live Header installiert?
Damit könntest du schonmal sehen wo du auf die error.php weiter geleitet wirst.
 
poste mal den qt der error.php!
steht die richtige URL in der Adresszeile? (man weiss ja nie! :D )
 
Zurück
Top