Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > de.comp.lang.php > #4077
| From | Torsten Zuehlsdorff <foo@meisterderspiele.de> |
|---|---|
| Newsgroups | de.comp.lang.php |
| Subject | Re: Doppelte Eingabe |
| Date | 2017-02-03 09:34 +0100 |
| Organization | A noiseless patient Spider |
| Message-ID | <o71pre$5pj$1@dont-email.me> (permalink) |
| References | <o6uvk2$qva$1@news.albasani.net> |
On 02.02.2017 10:54, Jan Novak wrote: > Hallo, > > ich habe hier ein verzwicktes Problem. > In einer Eingabemaske gibt es einen default Button, welcher ein > Speichern der Daten aus dieser Maske auslöst. Danach wird ein Fenster > mit einer Übersicht der gespeicherten Daten gezeigt, welche man mit dem > dortigen OK Button (ebenfalls der deault Button) beendet. > > Problem: > Wenn ein Benutzer in der 1. Maske "ENTER" drückt und weiss, dass gleich > die Übersichtsseite kommt, auf welcher er ebenfalls mit ENTER weiter > kommt, drückt er manchmal schnell hintereinander "ENTER" (das erste zum > speichern, das zweite wegen der Übersichtsseite). > > Nun passiert es in diesem Fall, das die Maske 2 mal gespeichert werden > will (mit diversen Fehlermeldungen). Ich habe versucht ein Flag zu > setzen, welches es beim speichern verhindern soll, dass die speichern > Methode nochmal aufgerufen wird. Das scheint aber nicht zu klappen, da > die Methode scheinbar noch aufgerufen wurde, bevor das Session Flag > gesetzt werden konnte. > > Wie könnte man das eleganter lösen? Mit einen Form-Token. Im Prinzip läuft es so: Du generierst einen zufällig Wert, speicherst ihn in der Session und hinterlegst ihn als Hidden-Field im Formular. Schickt der Nutzer das Formular ab, prüft der Code als erstes ob der übermittelte Zufallswert dem in der Session entspricht. Falls dem so ist, entfernt er ihn dort und macht dann weiter. Die nächste Anfrage würde fehlschlagen, weil der Zufallswert bereits gelöscht ist. Ein ganz perfekter Schutz ist das nicht, weil man zur absoluten Sicherheit irgendein Locking-Mechanismus braucht um Race-Conditions zu vermeiden. Für deinen Fall ist es aber mehr als ausreichend. Gruß, Torsten
Back to de.comp.lang.php | Previous | Next — Previous in thread | Find similar | Unroll thread
Doppelte Eingabe Jan Novak <repcom@gmail.com> - 2017-02-02 10:54 +0100
Re: Doppelte Eingabe Jan Novak <repcom@gmail.com> - 2017-02-02 11:11 +0100
Gelöst: Doppelte Eingabe Jan Novak <repcom@gmail.com> - 2017-02-02 11:13 +0100
Re: Doppelte Eingabe Stefan+Usenet@Froehlich.Priv.at (Stefan Froehlich) - 2017-02-02 12:04 +0000
Re: Doppelte Eingabe Jan Novak <repcom@gmail.com> - 2017-02-02 15:38 +0100
Re: Doppelte Eingabe Stefan+Usenet@Froehlich.Priv.at (Stefan Froehlich) - 2017-02-02 16:24 +0000
Re: Doppelte Eingabe "Christoph M. Becker" <cmbecker69@arcor.de> - 2017-02-02 18:05 +0100
Re: Doppelte Eingabe Stefan+Usenet@Froehlich.Priv.at (Stefan Froehlich) - 2017-02-02 17:07 +0000
Re: Doppelte Eingabe Stefan+Usenet@Froehlich.Priv.at (Stefan Froehlich) - 2017-02-02 17:08 +0000
Re: Doppelte Eingabe Torsten Zuehlsdorff <foo@meisterderspiele.de> - 2017-02-03 09:34 +0100
csiph-web