wie verhindere ich ein Zurück

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • wie verhindere ich ein Zurück

    Mein Frontend ist fast fertig und eingehende Tests laufen gerade.

    Ein Problem ist dabei heute aufgetaucht, als ein Tester den Zurückbutton des Browsers betätigte.
    Das endet entweder mit einer Reihe von MySQL Fehlern oder schreibt Sachen doppelt in die Datenbank.

    Wie kann ich es in PHP abfangen, das ein Nutzer den Zurückbutton des Browsers nutzt?

    Gruß Maribel

  • #2
    PHP-Code:
    header('Location: ...'); 
    INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


    Kommentar


    • #3
      Re: wie verhindere ich ein Zurück

      Original geschrieben von Maribel
      Mein Frontend ist fast fertig und eingehende Tests laufen gerade.

      Ein Problem ist dabei heute aufgetaucht, als ein Tester den Zurückbutton des Browsers betätigte.
      Das endet entweder mit einer Reihe von MySQL Fehlern oder schreibt Sachen doppelt in die Datenbank.

      Wie kann ich es in PHP abfangen, das ein Nutzer den Zurückbutton des Browsers nutzt?

      Gruß Maribel
      Du hast hier dein Beitrag gepostet; hast du auch gemerkt, dass nach dem Abschicken immer eine Seite zwischengeschaltet ist? Das ist die Lösung deines Problems! Du musst 3 Sachen implementieren:

      - php: per header(...)
      - javascript: location.href = ...
      - <meta http-equiv="refresh" content=" ... url...

      Kommentar


      • #4
        Hmm, ich rufe neue Seiten mit zwei Methoden auf, da ich oft Probleme mit header habe.

        Einmal mit: meta http-equiv="refresh" content=" ... url...
        oder halt mit dem Formularbutton, wenn es irgendwie passt.

        Ich weiß nicht so genau, worauf ihr hinaus wollt, eine Seite dazwischen schalten, ok. Habe ja schon oft gesehen, das in anderen Seiten dann kommt, die Seite ist nicht mehr gültig, genau da muss ich hin.

        Bitte mal etwas genauer.

        Vielen Dank
        Maribel

        Kommentar


        • #5
          Eingabeseite => Speichernseite (meist = Eingabeseite; kann aber eine andere sein) => header('location: http://.../zwischenseite.php'); => Zwischenseite enthält: 1. meta refresh, 2. einen link falls meta refresh abgeschaltet ist, 3. eventuell javascript-Umleitung => Ziel von Zwischenseite ist die neue Seite.

          Alles klar?

          Kommentar


          • #6
            die zwischenseite braucht man nicht unbedingt ... die hat IMHO nur eine optische bedeutung.
            INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


            Kommentar


            • #7
              Es geht auch so:

              im Formular eine Session-variable festsetzen
              wurde in die DB eingetragen, diese Session variable auf null setzen.

              ergo ist die variable != null insert ansonsten mach nix
              Signatur-Text ...

              Kommentar


              • #8
                Original geschrieben von dani_o
                Es geht auch so:

                im Formular eine Session-variable festsetzen
                wurde in die DB eingetragen, diese Session variable auf null setzen.

                ergo ist die variable != null insert ansonsten mach nix
                Die Existenzprüfung des DS muss man unabhängig davon sowieso machen.

                Kommentar


                • #9
                  Ein Zurück kannst du eh nicht verhindern. Denn diese Seite kommt aus dem Cache des Browsers. Was du verhindern kannst ist es die Seite, wenn man Zurück gedrück hat, an der Eintragung der nochmals gleichen Daten zu hindern. Sprich der User könnte ja die Seite refreshen und damit würden die Daten auch in der DB landen.
                  Beim erstmaligen Ausgeben des Forms setzt du eine Session Var. Das Formular prüft vor dem Eintrag ob die Session Var gesetzt ist, trägt die Daten ein und löscht die Session Var wieder. Wenn jetzt der User auf der Form Seite nach dem Eintrag der Daten einen Refresh macht, dann verhindert das Script das doppelte Eintragen der Daten wegen der fehlenden Session Var (http://tobisworld.ch/misc/test/header.php)
                  Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                  [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                  Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                  Kommentar


                  • #10
                    Du kannst .B. bei jedem Aufruf der Seite die Zeit speichern lassen z.B. in einer Session. Jedes deiner Scirpts setzt beinahe zu Beginn des Scripts die Session wieder. $_SESSION['last'] = time();
                    In deinem Formular fügst du ein Input "hidden" mit $_SESSION['last'] als Value ein.
                    In deinem Script, welches das Formular verarbeitet prüfst du am Anfang ob z.B. $_POST['last'] == $_SESSION['last'] und setzt dann unabhängig davon wieder $_SESSION['last'] = time();
                    Beim Zurückgehen werden immer noch die selben POST/GET/.. Daten gesendet. Die Zeit in der $_SESSION['last'] hat sich aber verändert (mit dem erstmaligen Aufruf des Verarbeitungs- Scripts), also werden die Daten nicht mehr verarbeitet und du könntest den User z.B. direkt noch eins zurückleiten oder auf eine andere Seite schicken z.B. mit header("Location: ...")

                    Kommentar

                    Lädt...
                    X