Formular reloadsperre
Peter
- php
Hallo..
Ich habe ein Formular mit dem ich mit "Post" den inhalt an einphpscript/MySqldatenbank übergebe .... soweit so gut
Jetzt gibt es aber leute die drücken dann vielleicht auf reload...und dann habe ich den mist 2 mal in der Datenbank.. hat wer eine Idee wie ich das sperren kann.
lg Peter
Tag
Jetzt gibt es aber leute die drücken dann vielleicht auf reload...und dann habe ich den mist 2 mal in der Datenbank.. hat wer eine Idee wie ich das sperren kann.
Füge in jedes Formular etwas in der Art
<input type="hidden" name="uniqformid" value="<?= md5(uniqid(microtime(),1).getenv("REMOTE_ADDR")) ?>" />
ein. Wenn Du die übermittelten Daten speicherst, schaust Du zunächst nach, ob mit dieser uniqformid schonmal was gespeichert wurde. Wenn nicht - eintragen. Wenn schon - Fehlermeldung. Mit der Zeit kannst Du dann irgendwie die alten uniqformids wieder löschen.
Ciao,
Harry
Dank dir... hat mir seh geholfen
Tag
Jetzt gibt es aber leute die drücken dann vielleicht auf reload...und dann habe ich den mist 2 mal in der Datenbank.. hat wer eine Idee wie ich das sperren kann.
Füge in jedes Formular etwas in der Art
<input type="hidden" name="uniqformid" value="<?= md5(uniqid(microtime(),1).getenv("REMOTE_ADDR")) ?>" />
ein. Wenn Du die übermittelten Daten speicherst, schaust Du zunächst nach, ob mit dieser uniqformid schonmal was gespeichert wurde. Wenn nicht - eintragen. Wenn schon - Fehlermeldung. Mit der Zeit kannst Du dann irgendwie die alten uniqformids wieder löschen.
Ciao,
Harry
Huhu Peter
ein Beispiel findest Du hier
http://php-faq.de/q-formular-mehrfach.html
eine weitere Variante wäre es einen DB-Eintrag beim Aufruf des
Formulares zu machen, dabei einen Datensatz mit eindeutiger ID anzulegen und diese ID im Formular in einem hidden-field mitschleppen.
Beim "submit" des Formulares wird der Datensatz mit der entsprechenden ID "updated".[1]
Damit gibt es keine Doppelpostings und Du kannst nebenbei auswerten wie viele User das Formular starten und es dann doch nicht abschicken.[2]
so far ...
lulu
[1] sorry for this horrible denglish
[2] Das sind dann alle Einträge in der DB mit ID aber ohne weiteren Inhalt.