Problem mit 'header' (Page reload springt zu vorheriger Seite)
stna1981
- php
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
Hello,
ich versuche gerade, eine Timeout-Funktion in PHP zu implementieren, die nach Ablauf einer gewissen inaktiven Zeit auf eine Fehlerseite springt.
Das ist ja eine wirklich portable Funktion, wenn die selbstständig von einer Seite auf die andere springt. Hast Du nicht Angst, dass dein PC davon beschädigt werden könnte?
Liebe Grüße aus Syburg bei Dortmund
Tom vom Berg
Hallo.
Das ist ja eine wirklich portable Funktion, wenn die selbstständig von einer Seite auf die andere springt. Hast Du nicht Angst, dass dein PC davon beschädigt werden könnte?
Was ist eine portable Funktion und wieso sollte mein PC davon beschädigt werden? ^^
Gruß, Stefan
Hello,
(wenn die Timeout-Bedingung erfüllt ist):
und die wäre? Kann es sein, dass durch den Aufruf der error.php eine neue Session gestartet wird, die beim nächsten Reload wieder Gültigkeit hat?
Ach ja, FYI, Location muss mit einer absoluten URL versendet werden (http://www.example.com/error.php?error=timeout).
MfG
Rouven
Hallo,
(wenn die Timeout-Bedingung erfüllt ist):
und die wäre?
Die Timeout-Funktion prüft, ob der aktuelle Timestamp größer dem ist, der in der Session als Ablaufdatum eingetragen ist. Wenn ja -> siehe oben, wenn nein wird ein neuer Timeout gesetzt.
Kann es sein, dass durch den Aufruf der error.php eine neue Session gestartet wird, die beim nächsten Reload wieder Gültigkeit hat?
Dem ist so. Da die alte Session zerstört wird, wird eine neue angelegt. Kann sein, dass ich das Prinzip der header-Funktion falsch verstehe, aber sollte mit F5 dann nicht einfach die error.php neu geladen werden?
Ach ja, FYI, Location muss mit einer absoluten URL versendet werden (http://www.example.com/error.php?error=timeout).
Das weiß ich, da ich aber lokal entwickele, kann ich (derzeit) keine absoluten URLs verweden.
Gruß, Stefan
Hi,
Ach ja, FYI, Location muss mit einer absoluten URL versendet werden (http://www.example.com/error.php?error=timeout).
Das weiß ich, da ich aber lokal entwickele, kann ich (derzeit) keine absoluten URLs verweden.
wieso das? http://localhost/error.php?error=timeout ist auch absolut. Und absolut korrekt.
Ciao,
Martin
Das weiß ich, da ich aber lokal entwickele, kann ich (derzeit) keine absoluten URLs verweden.
wieso das? http://localhost/error.php?error=timeout ist auch absolut. Und absolut korrekt.
Ok, stattgegeben :) ich bin mir aber noch nicht endgültig im klaren, wie die Ordnerstruktur am Ende aussehen wird, daher habe ich es vorgezogen, die absoluten Pfade noch nicht zu verwerden, um flexibel zu bleiben. Spielt das für das o. g. Problem irgendeine Rolle oder ist das unabhängig davon?
Gruß, Stefan
Hi Stefan,
http://localhost/error.php?error=timeout ist auch absolut. Und absolut korrekt.
Ok, stattgegeben :)
danke. :-)
[...] vorgezogen, die absoluten Pfade noch nicht zu verwerden, um flexibel zu bleiben. Spielt das für das o. g. Problem irgendeine Rolle oder ist das unabhängig davon?
Es spielt vermutlich keine Rolle. Ich sage "vermutlich" deshalb, weil die derzeit verbreiteten Browser auch relative Angaben beim Location-Header verarbeiten können[*], aber es ist auf jeden Fall ein Regelverstoß. Es kann also durchaus sein, dass nächstes Jahr (oder schon nächste Woche um drei) eine neue Browserversion erscheint, die das genauer nimmt, und dann hättest du ein neues Problem.
Also lieber gleich richtig machen.
So long,
Martin
[*] Cheatah hat hier vor einiger Zeit mal ein Szenario beschrieben, in dem der IE definitiv ein Problem mit relativen URLs im Location-Header hatte.