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

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

  1. 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

    --
    Nur selber lernen macht schlau
    http://bergpost.annerschbarrich.de
    1. 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

  2. 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

    --
    -------------------
    sh:| fo:} ch:? rl:( br:& n4:{ ie:| mo:} va:) js:| de:] zu:| fl:( ss:) ls:& (SelfCode)
    Wenn du die Nadel im Heuhaufen nicht findest, zünde den Heuhaufen an.
    1. 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

      1. 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

        --
        "Gestern habe ich die Rede des Parteivorsitzenden gehört. Zwei Stunden lang!" - "Worüber?" - "Hat er nicht gesagt."
        1. 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

          1. 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.

            --
            Schon gewusst, dass Aftershave trotz des Namens eigentlich eher fürs Gesicht gedacht ist?