Rudof Schmidt: Formular nur einmal senden

Hallo,

ich möchte, dass ein Formular nur einmal abgesendet werden kann und dann der Button fürs Senden deaktiviert wird, damit die Angaben nicht mehrfach auf dem Server eintreffen. Allerdings muss man auch ohne Javascript in der Lage sein, das Formular abzusenden (dann natürlich theoretisch mehrmals).

Danke

Rudolf

  1. Hallo,

    Hallo Rudolf,

    ich möchte, dass ein Formular nur einmal abgesendet werden kann und dann der Button fürs Senden deaktiviert wird, damit die Angaben nicht mehrfach auf dem Server eintreffen. Allerdings muss man auch ohne Javascript in der Lage sein, das Formular abzusenden (dann natürlich theoretisch mehrmals).

    Danke

    Rudolf

    deine Besucher können natürlich die original Formular-Seite beliebig oft aufrufen. Wenn sie sie nur einmal abschicken sollen, braucht ein irgendwie geartetes "Gedächtnis". Mit reinem HTML wird es schwierig werden, zumindest unübersichtlich.

    Es bräuchte deshalb etwas mehr Informationen zu dem vorliegenden Fall. Beim Abschicken des Formulars ist die Seite ja erst mal weg. Mit dem Back-Button ist sie wieder da und beim erneuten Aufruf der Formularseite ist sie ebenfalls wieder da. Ist _dass_ das Problem ?Ist bekannt, _wer_ sich gerade auf Seite befindet (Username, Passwort), sind andere Techniken erlaubt (Cookie, ASP, PHP) um etwas mehr Funktionalität zu bekommen ? Wäre es möglich, beim Webserver zu entscheiden, ob die Daten übernommen werden ?

    Gruß
    Hans-Peter

    1. Hallo Hans-Peter,

      danke für Deine Antwort. Es geht mir gar nicht darum, dass die Leute auf den Back-Button drücken. Ich möchte nur bei der aktuell geladenen Seite, dass die Leute nicht doppelt auf den submit-Button drücken, damit das Formular nur einmal abgesendet wird. Und das am besten mit Javascript (vielleicht bei onSubmit sowas wie Button disablen, falls das geht)

      Rudolf

      Hallo Rudolf,

      ich möchte, dass ein Formular nur einmal abgesendet werden kann und dann der Button fürs Senden deaktiviert wird, damit die Angaben nicht mehrfach auf dem Server eintreffen. Allerdings muss man auch ohne Javascript in der Lage sein, das Formular abzusenden (dann natürlich theoretisch mehrmals).

      Danke

      Rudolf

      deine Besucher können natürlich die original Formular-Seite beliebig oft aufrufen. Wenn sie sie nur einmal abschicken sollen, braucht ein irgendwie geartetes "Gedächtnis". Mit reinem HTML wird es schwierig werden, zumindest unübersichtlich.

      Es bräuchte deshalb etwas mehr Informationen zu dem vorliegenden Fall. Beim Abschicken des Formulars ist die Seite ja erst mal weg. Mit dem Back-Button ist sie wieder da und beim erneuten Aufruf der Formularseite ist sie ebenfalls wieder da. Ist _dass_ das Problem ?Ist bekannt, _wer_ sich gerade auf Seite befindet (Username, Passwort), sind andere Techniken erlaubt (Cookie, ASP, PHP) um etwas mehr Funktionalität zu bekommen ? Wäre es möglich, beim Webserver zu entscheiden, ob die Daten übernommen werden ?

      Gruß
      Hans-Peter

      1. Hallo Hans-Peter,

        danke für Deine Antwort. Es geht mir gar nicht darum, dass die Leute auf den Back-Button drücken. Ich möchte nur bei der aktuell geladenen Seite, dass die Leute nicht doppelt auf den submit-Button drücken, damit das Formular nur einmal abgesendet wird. Und das am besten mit Javascript (vielleicht bei onSubmit sowas wie Button disablen, falls das geht)

        Rudolf

        Hallo Rudolf,

        oh je, da habe ich um viel zu viele Ecken herum gedacht. Der Fall ist viel einfacher. Trotzdem bin ich da kurzfristig überfragt. Wird das Formular tatsächlich zweimal abgeschickt, wenn man nur schnell genug drauf klickt ?

        So wie Du das schreibst, geht es - denke ich mal - nicht. Es wären ja zwei Aktionen notwendig (disable und submit). Also könnte kein Submit-Button verwendet werden, sondern ein Klick-Button und damit wäre schon wieder JavaScript im Spiel.

        Vielleich hat ja sonst noch jemand eine geniale Idee.

        Viel Erfolg
        Hans-Peter

        1. Äh, nochmal ich,

          wenn Du Server-seitig scripten köntest, und wüßtest, ob JavaScript enabled ist, könnte man natürlich auch zwei unterschiedliche Button machen der Art (z. B. mit ASP)

          <% if (JavaScriptEnabled = true) then %>
               <input type="button" ... onClick="DisableAndSubmit();">
          <% else %>
               <input type="submit" ...
          <% end if %>

          ob dann aber wirklich das Disable zeitlich nennenswert vor dem Submit ausgeführt wird, habe ich keine Ahnung.

          Gruß
          Hans-Peter

          1. Hi,

            habs jetzt gelöst. Ich setze eine lokale Variable auf der Seite einfach per onSubmit des Formulars auf "gesendet" und lehne dann jedes weitere Senden mit "return false" ab.

            Danke noch mal

            Rudolf

            Äh, nochmal ich,

            wenn Du Server-seitig scripten köntest, und wüßtest, ob JavaScript enabled ist, könnte man natürlich auch zwei unterschiedliche Button machen der Art (z. B. mit ASP)

            <% if (JavaScriptEnabled = true) then %>
                 <input type="button" ... onClick="DisableAndSubmit();">
            <% else %>
                 <input type="submit" ...
            <% end if %>

            ob dann aber wirklich das Disable zeitlich nennenswert vor dem Submit ausgeführt wird, habe ich keine Ahnung.

            Gruß
            Hans-Peter

            1. Hi Rudolf

              habs jetzt gelöst. Ich setze eine lokale Variable auf der Seite einfach per onSubmit des Formulars auf "gesendet" und lehne dann jedes weitere Senden mit "return false" ab.

              Geh noch nen Schritt weiter und steck die Variable in window.name, dann
              ist die gesamte session geschuetzt, das heißt dein User kann solange
              der Browser läuft (bzw window.name nicht geändert wird) nicht wieder posten.

              Tschau
                Rolf