Warnmeldung bei Formular-Reload verhindern

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

  • Warnmeldung bei Formular-Reload verhindern

    Folgende Situation: Jemand füllt auf meiner Seite ein POST-Formular aus und schickt dies ab. Danach lädt er die Seite, auf die das Formular verwiesen hat, neu. Dies geschieht entweder unmittelbar nach dem Abschicken des Formulars durch Reload oder später durch die Zurück-Schaltfläche. Folge: Der bekannte Warndialog erscheint, der einem mitteilt, dass die Formulardaten erneut gesendet werden, wenn man den Dialog mit OK bestätigt.

    Es ist mir zwar bereits gelungen, zu verhindern, dass das erneute Absenden des Formulars durch OK auch zur Verarbeitung der Daten durch das Skript führt (durch Abgleich einer mitgesendeten Variable mit einer entsprechenden Session-Variable), ich bin aber noch nicht ganz zufrieden. Erstens funktioniert das nur bei aktivierten Cookies und zweitens nervt die Meldung beim Rückwärtsnavigieren.

    Frage: Gibt es eine Möglichkeit, den Browser "vergessen" zu lassen, dass eine aufgerufene Seite POST-Daten enthielt, nachdem diese bereits erfolgreich verarbeitet wurden? Oder gibt es eine andere Alternative? Wenn man z.B. bei Google eine Suchanfrage stellt, dann kann man da problemlos reloaden bzw. zurück navigieren, ohne dass die Warnung erscheint (genauso will ich das auch). Vielleicht liegt das daran, dass die ein GET-Formular verwenden, aber GET in komplexen Formularen erscheint mir nicht ganz praktikabel...
    http://www.zentralplan.de/

  • #2
    bau eine weiterleitung mit header (...) ein, wenn das formular erfoglreich abgearbeitet worden ist.

    gruß
    peter
    Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
    Meine Seite

    Kommentar


    • #3
      Huch... da bin ich aber anderer Meinung!
      Grundsätzlich halte ich Weiterleitungen, auf die eigene Domain, für flüssiger als Wasser, also für überflüssig.

      Die Meldungen treten eigendlich nur in verbindung mit Sessions auf. Die dusselige Sessionverwaltung schraubt (etwas zu doll) an den Headern.

      PHP-Code:
      error_reporting(E_ALL);
      session_cache_limiter('none');//none/nocache/private/private_no_expire/public
      session_start();
      header('Cache-Control: no-store');
      header('Pragma: no-cache'); 
      Biegt das wieder hin.
      Kann auch gerne hier getestet werden: http://www.technischedaten.de/pmwiki...teBuchSchlicht
      Zuletzt geändert von combie; 02.08.2007, 19:44.
      Wir werden alle sterben

      Kommentar


      • #4
        Die Meldungen treten eigendlich nur in verbindung mit Sessions auf
        nö, tut sie nicht. die meldung tritt wie unten beschrieben immer beim reload eines bereits abgesendeten formulars auf.

        gruß
        peter
        Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
        Meine Seite

        Kommentar


        • #5
          Keine Ahnung was deine Spielerei an den Headern bringen soll combie, aber im FF2 hab ich das Problem sowohl bei deinem GB, so wie auch wenn ich deinen Code in einer beliebigen Website einbaue.
          (Mal abgesehen davon, dass sich die Cache-Header praktisch gar nicht ändern... zumal ich nicht verstehe was die Cache-Header mit dem erneuten Senden von POST-Daten zutun haben soll)

          Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

          bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
          Wie man Fragen richtig stellt

          Kommentar


          • #6
            Rückwärtsgang....!!
            Mit dem neuesten Updates des FF tritt es wieder auf!
            Da hat sich was geändert!
            Aber mein IE und Opera bleiben weiterhin ruhig.

            Nunja.. werde ich wohl noch mal dran arbeiten müssen...
            (oder vergessen)

            zumal ich nicht verstehe was die Cache-Header mit dem erneuten Senden von POST-Daten zutun haben soll
            Schau dir mal die gesendeten (session original)Header mit der LifeHeaders Erweiterung von FF an, dann siehst du dass Postcheck oder so ähnlich, auf 0 gesetzt wird.
            Wir werden alle sterben

            Kommentar


            • #7
              Original geschrieben von combie
              Schau dir mal die gesendeten (session original)Header mit der LifeHeaders Erweiterung von FF an, dann siehst du dass Postcheck oder so ähnlich, auf 0 gesetzt wird.
              Und?
              Ich möchte behaupten, dass du keine Ahnung hast was dieser Header bedeutet...

              Es hat mich jetzt eine Viertel Stunde gekostet das raus zu finden, denn es ist kein offizieller Header der in den RFCs definiert ist...
              Genau genommen ist es ein "Feature" unseres allseits beliebten Browser IE und wird seit der Version 5 unterstützt. Das Feature wurde von ihnen "lazy update" getauft und hat einfach rein gar nichts mit den Post-Daten zutun!
              Nähere Informationen finden sich hier:
              http://msdn2.microsoft.com/en-us/library/bb250440.aspx

              Da es ein reines Feature vom IE ist möchte ich mir anmaßen zu behaupten, dass der FF es sowieso komplett ignoriert, auch wenn ich es nicht weiß.

              Aber mal ganz abgesehen davon, die Fehlermeldung kommt bei mir auch im IE7 in deinem Gästebuch.

              Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

              bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
              Wie man Fragen richtig stellt

              Kommentar


              • #8
                Nachtrag:
                PHP-Code:
                error_reporting(E_ALL);
                session_cache_limiter('private'); // none/nocache/private/private_no_expire/public
                session_start();
                // header('Cache-Control: no-store');
                // header('Pragma: no-cache'); 
                Damit klappts jetzt auch mit dem neuen FF
                (Opera kann ich gerade nicht testen)
                Zuletzt geändert von combie; 02.08.2007, 20:30.
                Wir werden alle sterben

                Kommentar


                • #9
                  Original geschrieben von combie
                  Damit klappts jetzt auch mit dem neuen FF
                  Nein tut es nicht.

                  Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

                  bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
                  Wie man Fragen richtig stellt

                  Kommentar


                  • #10
                    Bei mir Ja! (das online Gästebuch ist noch nicht geändert)
                    Aber was solls.. werde mich nochmal in Ruhe daran begeben.
                    mal schauen, obs was bringt.
                    Im Moment habt ihr wohl recht!


                    ps:
                    http://msdn2.microsoft.com/en-us/library/bb250440.aspx
                    Da ist die Rede von einem Meta Tag, oder habe ich was übersehen?

                    Hier gibts einiges dazu: http://www.googlesyndicatedsearch.co...+no-store+http


                    pss:
                    Beim Back Button gibts die Meldung nicht mehr, aber beim F5(reload) leider immer noch
                    Zuletzt geändert von combie; 02.08.2007, 20:49.
                    Wir werden alle sterben

                    Kommentar


                    • #11
                      Original geschrieben von combie
                      ps:
                      http://msdn2.microsoft.com/en-us/library/bb250440.aspx
                      Da ist die Rede von einem Meta Tag, oder habe ich was übersehen?
                      Du hast den Artikel offensichtlich nicht mal vollständig überflogen!

                      Wie du von post-check auf den no-store Header kommst ist mir jetzt gerade auch schleierhaft...

                      Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

                      bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
                      Wie man Fragen richtig stellt

                      Kommentar


                      • #12
                        Original geschrieben von combie
                        Beim Back Button gibts die Meldung nicht mehr, aber beim F5(reload) leider immer noch
                        Wieso eigentlich "leider"?

                        Das ist doch ein absolut wünschenswertes Verhalten - gerade um mich in solchen Fällen wie Einträgen in Gästebüchern, Postings in Foren etc. davon abzuhalten, das Gleiche noch mal zu Posten.

                        Es "abschalten" zu wollen, erscheint mir ehrlich gesagt reichlich meschugge.
                        I don't believe in rebirth. Actually, I never did in my whole lives.

                        Kommentar


                        • #13
                          ähm, sorry dass ich mich einmische, ich bins wieder, der threadöffner. ich gebe zu, dass ich ein bisschen stolz bin, als newbie wohl offenbar ne voll schwierige profifrage gestellt zu haben. hätte nicht gedacht, dass das problem so kompliziert und unergründet ist, dass selbst die chefs in sachen header und so an ihre grenzen kommen. ich meine, die erfinder von dem internet hätten sich doch denken können, dass das mit der warnung beim reload echt nervt, warum haben die das nicht gleich abgeschaltet? hat doch keiner was von...

                          für mich bleibt die frage, wie ist nun der workaround dafür? ich kann hier irgendwie leider nichts gscheides beisteuern, weil ich hab eben keine ahnung. aber eure beiträge zu studieren bringt mich irgendwie auch keiner lösung näher (ich freu mich natürlich, dass ihr hirnfutter habt.) ich würde ja auch alleine weiter recherschieren, aber ich weiß nicht mal in welche richtung. hat jemand n tip? ach so, ja wie gesagt, eine lösung die von sessions abhängig ist, würde ich gerne vermeiden, wenns geht...

                          vielen dank
                          http://www.zentralplan.de/

                          Kommentar


                          • #14
                            Original geschrieben von Kropff
                            bau eine weiterleitung mit header (...) ein, wenn das formular erfoglreich abgearbeitet worden ist.

                            gruß
                            peter

                            Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

                            bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
                            Wie man Fragen richtig stellt

                            Kommentar


                            • #15
                              @ghostgambler: Meinst du sowas?:
                              PHP-Code:
                              <?php
                                
                              if (isset($_GET['danke'])) echo "Danke für den Eintrag!<br />";
                                if (
                              $_POST) {
                                  
                              // Daten werden hier verarbeitet
                                  
                              header('Refresh: 0; url=formular.php?danke');
                                  exit;
                                } else {
                                  echo 
                              "<form action='formular.php' method='post'>";
                                  echo 
                              "<input type='text' name='eingabe' />";
                                  echo 
                              "<input type='submit' value='abschicken' /></form>";
                                }
                              ?>
                              http://www.zentralplan.de/

                              Kommentar

                              Lädt...
                              X