Tom: formular nur einmal senden...

Beitrag lesen

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