Ich habe eine HTML-Datei mit einem Formular gebaut. Dieses Formular sendet die in Inputfelder eingegebenen Daten via POST an ein PHP-Skript (bzw. die HTML-Datei ist das PHP-Skript, oben PHP, darunter HTML) und das sendet eine E-Mail.
Nach dem Absenden ersetze ich im Formular einen Platzhalter und zeige dem User an, dass die Datenübermittlung erfolgreich war (oder dass ein Fehler auftrat).
Nun befindet sich die PHP-Seite natürlich noch im POST-Zustand, d. h. ein Aktualisieren der Seite würde das Formular erneut absenden. In mir bekannten Browsern wird man davor aber gewarnt. Nur scheinbar beim iPhone in Safari nicht. Anscheinend gibt es bei der von mir entwickelten Seite einen Besucher/Nutzer, der die Ergebnisseite des Formulars im Browser offen hat und alle paar Stunden eine erneute Mail sendet. Vielleicht bei jedem erneuten Öffnen der App.
Meine Fragen lauten:
a) Eher aus Interesse: Warum macht (nur) Safari das?
b) Viel wichtiger: Wie verhindere ich das optimalerweise?
Bzgl. b): Ich würde normalerweise einfach eine Weiterleitung mit dem PHP-Befehl
Daher die Frage, wie man das optimalerweise macht, also wie man verhindern kann, dass ein Formular doppelt bzw. erneut abgesendet wird, wenn man die Seite neu lädt. Oder ist das mit dem
Nach dem Absenden ersetze ich im Formular einen Platzhalter und zeige dem User an, dass die Datenübermittlung erfolgreich war (oder dass ein Fehler auftrat).
Nun befindet sich die PHP-Seite natürlich noch im POST-Zustand, d. h. ein Aktualisieren der Seite würde das Formular erneut absenden. In mir bekannten Browsern wird man davor aber gewarnt. Nur scheinbar beim iPhone in Safari nicht. Anscheinend gibt es bei der von mir entwickelten Seite einen Besucher/Nutzer, der die Ergebnisseite des Formulars im Browser offen hat und alle paar Stunden eine erneute Mail sendet. Vielleicht bei jedem erneuten Öffnen der App.
Meine Fragen lauten:
a) Eher aus Interesse: Warum macht (nur) Safari das?
b) Viel wichtiger: Wie verhindere ich das optimalerweise?
Bzgl. b): Ich würde normalerweise einfach eine Weiterleitung mit dem PHP-Befehl
header
machen und mittels eines GET-Parameters der Seite mitteilen, dass die Erfolgsmeldung angezeigt werden soll. Etwa so: header("Location: /form.php?success=true");
. Was ich daran aber unschön finde: Ruft man diese Seite mit dem Parameter manuell auf, so erhält man auch die Erfolgsmeldung. Ist nicht schlimm, aber eben nicht perfekt.Daher die Frage, wie man das optimalerweise macht, also wie man verhindern kann, dass ein Formular doppelt bzw. erneut abgesendet wird, wenn man die Seite neu lädt. Oder ist das mit dem
Location
das einzig Mögliche?Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Marcus Gräfe“ ()