doppelt abschicken des formulars verhindern

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

  • doppelt abschicken des formulars verhindern

    Hi,

    ich hab folgendes Problem:
    Auf meiner Seite geht die Registrierung über mehrere Seiten (3, genau genommen). Die ausgefüllten Sachen speichere ich einfach in die Session. Auf der 3 Seite wird eine Übersicht angezeigt, was der User alles eigegeben hat. Falls er zufrieden ist, geht er halt auf submit.
    Genau hier liegt das Problem, falls er zweimal auf den Submit drückt (weil es zB zu lange dauert), werden die Sachen zwei mal übermittelt. Das heißt auch zwei mal in die DB abgelegt.
    Jetzt suche ich eine Lösung für dieses Problem.

    Mein Chef wünscht sich sowas, das beim klick auf Submit er sofort auf eine, sagen wir mal, Preload Seite umgeleitet wird. Unter Preload Seite meine ich, es erscheint ein Gif mit einem Pfeil, oder sowas, der sich dreht und symbolisiert halt, dass Daten eingetragen werden und der User warten soll. Vorteil ist halt, da er sofort auf die Seite umgeleitet wird, kann er nicht nochmal auf submit drücken und während dieser Pfeil dargestellt wird können die Sachen sicher eingetragen werden. Nach ein paar Sekunden wird er natürlich weiter geleitet zu der Danke Seite oder sowas.
    Ich gegoogelt, aber nicht gefunden. Liegt auch wahrscheinlich da dran, das ich nicht weiss nach was ich suchen soll.
    Jemand eine Idee?

    Ich bin auch an anderen Ansätzen intressiert. Immer her mit :-)

    Gruss,
    Andreas

  • #2
    Schau dir mal die Funktion header() an.
    [color=red]Geht nicht[/color] ist keine Fehlermeldung

    Kommentar


    • #3
      Schlagwort JavaScript,

      beim absenden ne function aufrufen die den Submit Button deaktiviert. Sind 2 Zeilen Code. Kannst zusätzlich den Text in "Bitte warten" des Buttons ändern.

      Kommentar


      • #4
        Falsch

        ähm, mit Verlaub: die bisherigen Lösungen führen nicht zum gewünschten Erfolg, da nach Step3 das Formularergebnis im Browser erscheint und der User beliebig oft F5 (bzw zurück/F5) drücken kann und somit den letzten Post wiederholt (bzw. GET). Dies würde x-mal den Datensatz schreiben.

        Mein Ansatz bei solchen Formularen:

        da Du sowieso mit Sessions arbeitest, setze beim Erstaufruf des Formulars eine Session-Variable (zB $_SESSION["form_step"]) auf 0:

        nach dem Klick auf 'Weiter' machst Du eine Validierung und setzt $_SESSION["form_step"] auf 1, step 2 etc...

        Somit ist nach dem letzten Schritt $_SESSION["form_step"] auf 3 und der User bekommt immer nur den 'vielen dank' screen, OHNE daß noch irgendetwas geschrieben wird.

        Der Aufbau wäre dann zB:
        PHP-Code:
        <?php if ($_SESSION["form_step"]==0): ?>
        <form ....>
        erstes formular
        </form>
        <?php elseif ($_SESSION["form_step"]==1): ?>
        <form ..:>
        zwites formular
        </form>
        <?php elseif ($_SESSION["form_step"]==2): ?>
        <form 3>
        Anzeige und Bestätigung der bisherigen Daten
        </form3>
        <?php else: ?>
        Vielen Dank für Ihre Registrierung
        <?php endif; ?>
        nice day
        Quickborner

        Kommentar


        • #5
          danke, erstmal.
          alle diese Lösungen kenn ich schon.

          Weiß den keiner wie diese Lösung mit der 'Preload' Page geht?
          Ich weiss vorallem nicht wie ich nach einer bestimmten Zeit den User weiter leiter.

          Kommentar

          Lädt...
          X