Hannes: Doppelte Absendung eines Formulars

Guten Morgen,

ein Benutzer gibt in einem Formular mehrere Angaben u.a. seine Email-Adresse an und sendet dieses zum Schluss ab.

Bei Absendung passiert folgendes:

  • Generierung eines PDFs mittels XSLT & XML über Apache FOP (PHP ü. Batch-Datei)
  • diverse Eintragungen in MySQL-Datenbank (PHP)
  • 2 Emails werden per PHP-Mail ausgelöst (Über externen Server)
  • Session und Sessioninhalt wird gelöscht (PHP)

Während das ganze abläuft, sieht der User eine Animation mit "Ihr Auftrag wird bearbeitet". Doch jetzt hatte ich den Fall dass ein User die Seite aktualisiert hat, obwohl sein Auftrag bereits erfolgreich bearbeitet wurde und er darüber informiert wurde...

Wie ist es für mich möglich, dass der Benutzer diese Seite nicht nochmal abrufen bzw. aktualisieren kann. Einfach eine Variable nach erfolgreicher Bearbeitung setzen die dann am Anfang des Script überprüft wird und notfalls abbricht?

Danke.

  1. Bei Schilderung meines Problems bin ich im Ansatz auf die Lösung gestossen...

    http://www.php-faq.de/faq-single.html#formular-mehrfach

  2. ich löse das immer mit einem hash. der hash wird auf der formularseite generiert und in einem hidden feld und in der session gespeichert.

    auf der seite die das Formular verarbeitet, wird als ersts geprüft ob der hash vorhanden ist (in der session), fals ja -> hash umgehen löschen, dann das formular verarbeiten. fals der hash nicht vorhanden ist, verarbeitung abbrechen.

    der hash ist irgendwas eindeutigesmeistens irgendwie so: md5(Aktuelle Zeit in Millisekunden + rand(1,100000))