Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > de.comp.lang.php > #4067 > unrolled thread
| Started by | Jan Novak <repcom@gmail.com> |
|---|---|
| First post | 2017-02-02 10:54 +0100 |
| Last post | 2017-02-03 09:34 +0100 |
| Articles | 10 — 4 participants |
Back to article view | Back to de.comp.lang.php
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
| From | Jan Novak <repcom@gmail.com> |
|---|---|
| Date | 2017-02-02 10:54 +0100 |
| Subject | Doppelte 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]
| From | Jan Novak <repcom@gmail.com> |
|---|---|
| Date | 2017-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]
| From | Jan Novak <repcom@gmail.com> |
|---|---|
| Date | 2017-02-02 11:13 +0100 |
| Subject | Gelö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]
| From | Stefan+Usenet@Froehlich.Priv.at (Stefan Froehlich) |
|---|---|
| Date | 2017-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]
| From | Jan Novak <repcom@gmail.com> |
|---|---|
| Date | 2017-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]
| From | Stefan+Usenet@Froehlich.Priv.at (Stefan Froehlich) |
|---|---|
| Date | 2017-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]
| From | "Christoph M. Becker" <cmbecker69@arcor.de> |
|---|---|
| Date | 2017-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]
| From | Stefan+Usenet@Froehlich.Priv.at (Stefan Froehlich) |
|---|---|
| Date | 2017-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]
| From | Stefan+Usenet@Froehlich.Priv.at (Stefan Froehlich) |
|---|---|
| Date | 2017-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]
| From | Torsten Zuehlsdorff <foo@meisterderspiele.de> |
|---|---|
| Date | 2017-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