Alex: Zurück-Button im Browser macht Probleme

Guten Abend.

Ich habe folgendes Problem:
Ich sende ein Formular per Get-Methode ab, damit der Benutzer bei Betätigung des Zurück-Buttons nicht diese Meldung bekommt, die bei der Post-Methode erscheint.
Nun werden die Eingaben durch das gleiche Script, das das Formular erzeugt, geprüft. Wenn Fehler auftreten, wird vom gleichen Scripts eine Meldung und das Formular mit den Eingaben ausgegeben. Wenn die Eingaben richtig sind, dann leitet es weiter.
Nun wird aber bei Betätigung des Zurück-Buttons die Fehlermeldung wieder ausgegeben, da durch die URL die fehlerhaften Get-Variablen erneut aufgerufen werden.

Nun die Frage:
Wie kann ich das Script so programmieren, dass es "merkt", ob der Aufruf durch die Betätigung des Zurück-Buttons oder durch Absenden des Formulars geschieht.

Dass man nicht direkt abfragen kann, ob der Button betätigt wurde, das weiß ich. Es muss irgendwelche Tricks (Spielereien mit Variablen oder Umleitungen?) geben.

Könnt ihr mir vielleicht auf die Sprünge helfen?

Alex

  1. Guten Morgen.

    Ich sende ein Formular per Get-Methode ab, damit der Benutzer bei Betätigung des Zurück-Buttons nicht diese Meldung bekommt, die bei der Post-Methode erscheint.
    Nun werden die Eingaben durch das gleiche Script, das das Formular erzeugt, geprüft. Wenn Fehler auftreten, wird vom gleichen Scripts eine Meldung und das Formular mit den Eingaben ausgegeben. Wenn die Eingaben richtig sind, dann leitet es weiter.
    Nun wird aber bei Betätigung des Zurück-Buttons die Fehlermeldung wieder ausgegeben, da durch die URL die fehlerhaften Get-Variablen erneut aufgerufen werden.

    Diese Meldung kann ganz einfach durch das setzen der Header 303 See Other und Location: ~ abstellt werden.

    Wie kann ich das Script so programmieren, dass es "merkt", ob der Aufruf durch die Betätigung des Zurück-Buttons oder durch Absenden des Formulars geschieht.

    Dass man nicht direkt abfragen kann, ob der Button betätigt wurde, das weiß ich. Es muss irgendwelche Tricks (Spielereien mit Variablen oder Umleitungen?) geben.

    Für gewöhnlich würde man Sessions einsetzen. Das halte ich aber hier nicht für zwingend erforderlich. Validiere die Eingaben. Sind sie nicht in Ordnung gib einfach das Formular mit den getätigten Eingaben nochmals aus. (Es ist doch eh das selbe Script.) Sind sie in Ordnung, verarbeite die Eingaben und sende oben angesprochene Header.

    Gruß aus Berlin!
    eddi

    --
    Wer Rechtschreibfehler findet, darf sie behalten.
    1. Guten Tag.

      Ich sende ein Formular per Get-Methode ab, damit der Benutzer bei Betätigung des Zurück-Buttons nicht diese Meldung bekommt, die bei der Post-Methode erscheint.

      Diese Meldung kann ganz einfach durch das setzen der Header 303 See Other und Location: ~ abstellt werden.

      Ich hatte vorher versucht, durch das Script, das die Post-Daten erhält, nach Verarbeitung derer auf ein anderes Script weiterzuleiten. Bei Betätigung des Zurück-Buttons erhielt ich trotzdem diese Meldung. Bist du sicher, dass das funktioniert? Wenn ja, kannst du das noch etwas erläutern?

      Für gewöhnlich würde man Sessions einsetzen. Das halte ich aber hier nicht für zwingend erforderlich. Validiere die Eingaben. Sind sie nicht in Ordnung gib einfach das Formular mit den getätigten Eingaben nochmals aus. (Es ist doch eh das selbe Script.) Sind sie in Ordnung, verarbeite die Eingaben und sende oben angesprochene Header.

      Genau das tue ich (das gleiche Formular mit den getätigten Eingaben + Fehlermeldung ausgeben). Das Problem ist doch, dass wenn der Benutzer dann richtige Eingaben macht, also auf die nächste Seite/das nächste Script weitergeleitet wird, und dann den Zurück-Button betätigt, er wieder die Seite mit dem Formular mit den getätigten Eingaben + Fehlermeldung (s.o.) erhält. Er soll aber in diesem Fall die Seite mit dem Formular mit den den letztendlich akzeptierten und in der Datenbank gespeicherten Daten erhalten.
      Verstehst du das Problem (ist vielleicht etwas kompliziert zu beschreiben)? Hast du einen Tipp für mich?

      Danke,
      Alex

      1. Re:

        Dein Problem besteht also nicht darin, daß eine Meldung des Browsers ausgegeben wird, sondern vermutlich darin, daß ein Besucher die Daten mehrfach an Dein Script senden könnte?
         Wenn ich das jetzt richtig verstanden habe, dann vergebe in einem <input>-Element vom Typ "hidden" eine ID, unter der nur ein einziger Datensatz abgespeichert werden kann.

        Gruß aus Berlin!
        eddi

        --
        Wer Rechtschreibfehler findet, darf sie behalten.
        1. Dein Problem besteht also nicht darin, daß eine Meldung des Browsers ausgegeben wird, sondern vermutlich darin, daß ein Besucher die Daten mehrfach an Dein Script senden könnte?

          Nein, das würde ich noch hinnehmen. Mein Problem ist erstens, dass die Meldung des Browsers ausgegeben wird. Dies habe ich ja wie gesagt durch die Verwendung von Get-Variablen schon lösen können. Mein zweites Problem ist, dass ja bei falscher Eingabe eine Fehlermeldung erscheint. Wenn der Benutzer daraufhin eine richtige Eingabe macht, die nächste Seite erscheint und der Benutzer dann den Zurück-Button betätigt, dann erscheint die Fehlermeldung wieder. Es sollte aber an dieser Stelle stattdessen das Formular mit den letztendlich richtigen und gespeicherten Eingaben erscheinen.

          Es handelt sich um mehrere Fragen, die jeweils auf nacheinanderfolgenden Seiten erscheinen. Ein Hin- und Herspringen zwischen den Fragen soll aber durch die Browser-Buttons möglich sein. Vielleicht ist das jetzt verständlicher.

          Gibt es da Abhilfe?

          Danke (auch für deine bisherigen Antworten)
          Klaus

          1. Re:

            Es handelt sich um mehrere Fragen, die jeweils auf nacheinanderfolgenden Seiten erscheinen. Ein Hin- und Herspringen zwischen den Fragen soll aber durch die Browser-Buttons möglich sein. Vielleicht ist das jetzt verständlicher.

            Ahja. Nun bin ich im Bilde.

            Gibt es da Abhilfe?

            Leider nein. Du müßtest dafür in die History des Browsers eingreifen. D. h. serverseitig ist dort gar nichts auszurichten, aber auch der Weg über JavaScript ist Dir versperrt, da die History nicht geändert werden kann.
             Du hast tatsächlich einer der wenigen Konstellationen, bei denen ein auf dem Dokument befindlicher "zurück-Link" wirklich notwendig ist und nur damit kannst Du hier weiterkommen.

            Gruß aus Berlin!
            eddi

            --
            Wer Rechtschreibfehler findet, darf sie behalten.
            1. OK, ich danke dir für deine Hilfe!

              Dann werde ich es wohl so wie von dir vorgeschlagen machen müssen.

              Alex

          2. Hallo Alex,

            Danke (auch für deine bisherigen Antworten)
            Klaus

            wieso heißt Alex auf einmal Klaus?
            Ist es was Ernstes? Müssten wir uns Sorgen machen?

            *scnr*
             Martin

            --
            Alkohl ist ungesund,
            Rauchen ist schädlich,
            Sex ist unanständig
            - und die Erde ist eine flache Scheibe.
            1. wieso heißt Alex auf einmal Klaus?
              Ist es was Ernstes? Müssten wir uns Sorgen machen?

              Genauso wenig oder so viel wie ihr euch vielleicht Sorgen machen müsstet, dass XaraX wohl auch eddi heißt.
              T a t s ä c h l i c h handelt es sich bei Alex um einen Spitznamen von mir.

              Danke der Nachfrage ;-)

              Alex/Klaus