Mehrfaches Absenden von Formularen vermeiden

05.11.2008

Manchmal kommt es vor das User es hinbekommen Daten, die man nur einmal gebrauchen kann aus Versehen doppelt Absenden, weil sie in der Zielseite F5 drücken, oder zurück springen und das Formular erneut absenden.
Dafür gibt es eine ganz einfache Methode um dies zu verhindern.

In das betreffende Formular baut man einfach folgendes verstecktes Feld ein:

<input type="hidden" name=“formID“ value="<?= uniqid(""); ?>">

Dies bewirkt dass das Formular bei seinem Aufruf eine eindeutige ID erhält.

In der Zielseite des Formulars macht man die Verarbeitung der Daten nun einfach davon abhängig, ob die Form-ID schonmal verwendet wurde.

<?
session_start();

if($_SESSION["formID"] != $_POST["formID"])
{
     $_SESSION["formID"] = $_POST["formID"];
     //--------------------------------------
     // Verarbeiten der Formulardaten
     //--------------------------------------
}
?>

Sofern die aktuelle Form-ID nicht mit der letzten übereinstimmt werden die Daten verarbeitet, ansonsten geschieht nichts.