Hello,
wie kann ich es per php unterbinden das ein formular mehrere male abgeschickt werden kann?
Wenn das Formular per ServerPost von einem Server an einen anderen abgeschickt wird, durch ordentliche und gewissenhafte Programmierung.
Wenn das Formular von einem Client abgeschickt wird, dann kann man das mit PHP gar nicht verhinder, dass dasselbe Formular mehrmals geschickt wird. Der User könnte sich das Ding ja auch speichern oder nachbauen. Wie man Formulare baut, steht ja schließlich in SelfHTML.
Man kann jetzt clientseitig mittels JavaScript dafür sorgen, dass sich das Formular durch Submit selbst vernichtet. Das ist der einfachste und schnellste Weg. Dann können aber nur noch User mit eingeschaltetem JavaScript überhaupt Posten, da bei positiv programmiertem Schutzmechanismus sonst keine action festgelegt ist.
Zum Verfahren mit Zertifikaten:
Beim Anfordern eines Formulars vom Server erhält dieses eine Form-ID,
die in die Session des Users eingetragen wird. jetzt kann manin zwei
Richtungen einen Schutz aufbauen:
1. Wenn ein User dasselbe Formular zweimal abschickt, ist beim
zweiten Eintreffen des requests die Form-ID bereits verbraucht
und daher kann der Server das Doppelposting erkennen
2. Wenn ein User das gleiche Formular zweimal anfordert, kann der
Server in der Session über die Formularklasse erkennen, dass
eventuell noch ein offener Vorgang dieser Klasse besteht, der mit
Vorrang abgearbeitet oder abgebrochen werden muss und kann
dem User eine Rückfrage schicken. Sagt der user: Oh Entschuldigung,
das erste Fenster hatte ich aus Versehen geschlossen, kann er
wieder auf den alten Status aufgesetzt werden.
Außerdem sollte man alle Formularanforderungen nur in benannten Fenstern durchführen. Das führt dann bei doppelter Anforserung wenigstens bei den meisten Browsern dazu, dass es keine mehrfachen Instanzen einer Formularklasse am Client gibt. Leider führt das bei Clients ohne JavaScript und ungeübten Usern auch oft dazu, dass dieser verwirrt wird, da er glaubt, keine Antwort zu bekommen. Wenn die Formularklasse nämlich schon eine Instanz auf dem Server hat, und das Fenster zufällig nach hinten gerutscht ist, bleibt es dort auch.
HTML alleine ist leider bis heute noch nichtn in der Lage, das Fesnter mit dem Focus auch nach oben zu bringen. Hier muss mMn dringend eine HTML-Funktion geschaffen werden, die der Client auch berücksichtigt.
Liebe Grüße aus http://www.braunschweig.de
Tom
Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
Nur selber lernen macht schlau