PHP Wie am einfachsten das neusenden des Formulars via reload/refresh verhindern?

D

dreivier

Gast
Moin

Dachte ich hätte an alles gedacht. Durch Zufall habe ich im Browser nach absenden eines Feedback Formulars auf Refreh also Seite neuladen geklickt und dabei feststellen müssen das der Beitrag ein zweites mal abgeschickt wurde.

Wie kann man sowas einfach verhindern? ich habe zwar in Go.. was gefunden aber da blicke ich nicht durch. Da wird was von Weiterleitung geschrieben, mache ich das, bekomm ich Fehler von wegen header bereits gesendet usw.
Das Formular ist bei mir fest in die Index.php eingebaut, wenn ich es abschicke wird die index.php halt neu geladen.

Ne Idee wie ich das Problem lösen kann?

Danke.
 
in html machste ein "<input type="hidden" name="timestamp" value="<timestamp>">".

Damit bekommt jedes Formular bei Erzeugung eine eindeutige ID. Diese musst du beim 1. Anklicken irgendwo speichern.
Wenn beim 2. Absenden dann wieder diese ID kommt, Daten verwerfen, weil war schonmal da.


-- oder du liegst den form-sent timestamp in der session-variable des users ab, und checkst, ob der timestamp älter als 60 sekunden ist -> dann war es wohl nicht doppelt angeklickt. --
 
Könntest ganz plump prüfen ob POST bereits gesendet wurden, wenn ja, einen anderen Textbereich ausgeben:

<?PHP

Deine inludes etc ...

if (isset($_POST)) {
echo "Sie haben das Formular bereits versendet/abgeschickt.";
exit;
}

oder wenn kein direkter Stop, mit else { dein restlicher Code } ..
 
Zuletzt bearbeitet: (Rechtschreibung)
Ein redirect nach Verarbeitung des Formulars hilft auch.
 
hoagster schrieb:
Ein redirect nach Verarbeitung des Formulars hilft auch.

konkret:
PHP:
<?php

if(erfolgreiche_verarbeitung()) {
	header("Location: http://example.com/myOtherPage.php");
	die();
}
 
Sephe schrieb:
in html machste ein "<input type="hidden" name="timestamp" value="<timestamp>">".

Oder eine captcha, ist eh oft nötig bei öffentlichen Formularen und verhindert auch mehrfaches senden.
 
Zurück
Oben