Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > de.comp.lang.php > #4077

Re: Doppelte Eingabe

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>

Show all headers | View raw


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 | NextPrevious in thread | Find similar | Unroll thread


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