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


Groups > de.comp.lang.php > #4067 > unrolled thread

Doppelte Eingabe

Started byJan Novak <repcom@gmail.com>
First post2017-02-02 10:54 +0100
Last post2017-02-03 09:34 +0100
Articles 10 — 4 participants

Back to article view | Back to de.comp.lang.php


Contents

  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

#4067 — Doppelte Eingabe

FromJan Novak <repcom@gmail.com>
Date2017-02-02 10:54 +0100
SubjectDoppelte Eingabe
Message-ID<o6uvk2$qva$1@news.albasani.net>
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?

jan

[toc] | [next] | [standalone]


#4068

FromJan Novak <repcom@gmail.com>
Date2017-02-02 11:11 +0100
Message-ID<o6v0ju$nnh$1@news.albasani.net>
In reply to#4067
Am 02.02.2017 um 10:54 schrieb Jan Novak:
> 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.

[toc] | [prev] | [next] | [standalone]


#4069 — Gelöst: Doppelte Eingabe

FromJan Novak <repcom@gmail.com>
Date2017-02-02 11:13 +0100
SubjectGelöst: Doppelte Eingabe
Message-ID<o6v0og$nnh$2@news.albasani.net>
In reply to#4067
Am 02.02.2017 um 10:54 schrieb Jan Novak:
> 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.


Ich habe das jetzt mit der im zweiten Fall erscheinenden Fehlermeldung 
gelöst (ein nicht (mehr) gesetztes Objekt). Ich frage dieses Objekt ab 
und wenn es nicht existiert, wird nicht gespeichert.

Jan

[toc] | [prev] | [next] | [standalone]


#4070

FromStefan+Usenet@Froehlich.Priv.at (Stefan Froehlich)
Date2017-02-02 12:04 +0000
Message-ID<1t58931f77i3f82n3e8%sfroehli@Froehlich.Priv.at>
In reply to#4067
On Thu, 02 Feb 2017 10:54:10 Jan Novak wrote:
> 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 [...]
 
> Wie könnte man das eleganter lösen?
 
Unabhängig von der serverseitigen Behandlung solcher Probleme habe ich
bei den einschlägigen Masken auch noch ein paar Zeilen JavaScript ergänzt,
die dafür sorgen, dass das <form> nur 1x ausgelöst werden kann. Das hilft
ganz gut.

Servus,
   Stefan

-- 
http://kontaktinser.at/ - die kostenlose Kontaktboerse fuer Oesterreich
Offizieller Erstbesucher(TM) von mmeike

Stefan - Für Spinner: Werben bis es strebt!
(Sloganizer)

[toc] | [prev] | [next] | [standalone]


#4071

FromJan Novak <repcom@gmail.com>
Date2017-02-02 15:38 +0100
Message-ID<o6vg9b$e26$1@news.albasani.net>
In reply to#4070
Am 02.02.2017 um 13:04 schrieb Stefan Froehlich:
> On Thu, 02 Feb 2017 10:54:10 Jan Novak wrote:
>> 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 [...]
>
>> Wie könnte man das eleganter lösen?
>
> Unabhängig von der serverseitigen Behandlung solcher Probleme habe ich
> bei den einschlägigen Masken auch noch ein paar Zeilen JavaScript ergänzt,
> die dafür sorgen, dass das <form> nur 1x ausgelöst werden kann. Das hilft
> ganz gut.

Hättest du dafür ein einfaches Beispiel? (ich bin blutiger javascript 
Programmierer)

Jan

[toc] | [prev] | [next] | [standalone]


#4072

FromStefan+Usenet@Froehlich.Priv.at (Stefan Froehlich)
Date2017-02-02 16:24 +0000
Message-ID<1t58935c1bi1e45n3e8%sfroehli@Froehlich.Priv.at>
In reply to#4071
On Thu, 02 Feb 2017 15:38:35 Jan Novak wrote:
> Am 02.02.2017 um 13:04 schrieb Stefan Froehlich:
> > Unabhängig von der serverseitigen Behandlung solcher Probleme habe ich
> > bei den einschlägigen Masken auch noch ein paar Zeilen JavaScript ergänzt,
> > die dafür sorgen, dass das <form> nur 1x ausgelöst werden kann. Das hilft
> > ganz gut.
 
> Hättest du dafür ein einfaches Beispiel? (ich bin blutiger javascript 
> Programmierer)

Ich auch, deshalb scheue ich mich davor, es hier zu posten ;-)

Im wesentlichen läuft es darauf hinaus:

| <script language="JavaScript">
| 	var isSubmitted;
| 
| 	function singleFormSubmission() {
| 		if (isSubmitted) return false;
| 		isSubmitted = true;
| 		return true;
| 	}       
| </script>
| 
| <form [...] onsubmit="return singleFormSubmission();">

Servus,
   Stefan

-- 
http://kontaktinser.at/ - die kostenlose Kontaktboerse fuer Oesterreich
Offizieller Erstbesucher(TM) von mmeike

Freude mit Stefan, herzig und bockig!
(Sloganizer)

[toc] | [prev] | [next] | [standalone]


#4073

From"Christoph M. Becker" <cmbecker69@arcor.de>
Date2017-02-02 18:05 +0100
Message-ID<aa7ec64e-3970-59ca-f8e9-647206e26680@arcor.de>
In reply to#4072
On 02.02.2017 at 17:24, Stefan Froehlich wrote:

> Im wesentlichen läuft es darauf hinaus:
> 
> | <script language="JavaScript">

Das language Attribut sollte eigentlich schon lange nicht mehr verwendet
werden. Aber dazu kann ein anderer sicher mehr sagen. :)

> | 	var isSubmitted;
> | 
> | 	function singleFormSubmission() {
> | 		if (isSubmitted) return false;
> | 		isSubmitted = true;
> | 		return true;
> | 	}       
> | </script>
> | 
> | <form [...] onsubmit="return singleFormSubmission();">

Die Funktion ist nicht mal nötig. Es geht auch:

  <form […] onsubmit="return !!isSubmitted++">

Schön ist keine der beiden Varianten, aber sie funktionieren[TM].

X-Post und F'up2 de.comp.lang.javascript, wo es hingehört.

-- 
Christoph M. Becker

[toc] | [prev] | [next] | [standalone]


#4074

FromStefan+Usenet@Froehlich.Priv.at (Stefan Froehlich)
Date2017-02-02 17:07 +0000
Message-ID<1t58936714i2b57n3e8%sfroehli@Froehlich.Priv.at>
In reply to#4073
In de.comp.lang.php Christoph M. Becker <cmbecker69@arcor.de> wrote:
> On 02.02.2017 at 17:24, Stefan Froehlich wrote:
> Das language Attribut sollte eigentlich schon lange nicht mehr verwendet
> werden. Aber dazu kann ein anderer sicher mehr sagen. :)

Ich weiss schon, warum ich das nicht posten wollte :)
 
> X-Post und F'up2 de.comp.lang.javascript, wo es hingehört.

Soll sein. Dafür gehört aber bitte keine Kopie in meine Mailbox :-P

Servus,
   Stefan

-- 
http://kontaktinser.at/ - die kostenlose Kontaktboerse fuer Oesterreich
Offizieller Erstbesucher(TM) von mmeike

Stefan - der Glaube zu sinnen!
(Sloganizer)

[toc] | [prev] | [next] | [standalone]


#4075

FromStefan+Usenet@Froehlich.Priv.at (Stefan Froehlich)
Date2017-02-02 17:08 +0000
Message-ID<5t5893675ei2b57n3e8%sfroehli@Froehlich.Priv.at>
In reply to#4073
In de.comp.lang.php Christoph M. Becker <cmbecker69@arcor.de> wrote:
> On 02.02.2017 at 17:24, Stefan Froehlich wrote:
> > Im wesentlichen läuft es darauf hinaus: [...]

> Das language Attribut sollte eigentlich schon lange nicht mehr verwendet
> werden. Aber dazu kann ein anderer sicher mehr sagen. :)

Ich weiss schon, weshalb ich das gar nicht erst posten wollte...

> X-Post und F'up2 de.comp.lang.javascript, wo es hingehört.

Soll sein. Aber dafür gehört bitte keine Kopie in meine Mailbox :-)

Servus,
   Stefan 

-- 
http://kontaktinser.at/ - die kostenlose Kontaktboerse fuer Oesterreich
Offizieller Erstbesucher(TM) von mmeike

Verlieben, mehr als man erwartet. Stefan: edel und defloriert.
(Sloganizer)

[toc] | [prev] | [next] | [standalone]


#4077

FromTorsten Zuehlsdorff <foo@meisterderspiele.de>
Date2017-02-03 09:34 +0100
Message-ID<o71pre$5pj$1@dont-email.me>
In reply to#4067
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

[toc] | [prev] | [standalone]


Back to top | Article view | de.comp.lang.php


csiph-web