Ungewollte mysql-inserts durch Browseraktualisierung verhindern?
Fred
- programmiertechnik
Hallo,
wer hat eine Idee, wie ich verhindern kann, dass ein User ein- und denselben Eintrag durch versehentliches oder gar bewußtes Aktualisierung seines Browsers vornimmt?
Klar, ich könnte vor jedem Insert abfragen, ob genau dieser Insert innerhalb der letzten 5 Minuten bereits getätigt wurde... bzw. dieser Eintrag vorliegt.
Das stelle ich mir aber vom Programmieraufwand ziemlich umständlich vor.
Vielleicht könnte man ja auch jedes Post-Array in einer Session-Variablen speichern und jedesmal vergleichen, ob der neue Sessioneintrag für diese Variable dem letzten entspricht...
Aber vielleicht gibt es da von irgendwem ja auch schon eine geniale Lösung oder eine Funktion, eine Idee, oder, oder...
Freue mich über Eure Hilfe
Fred
wer hat eine Idee, wie ich verhindern kann, dass ein User ein- und denselben Eintrag durch versehentliches oder gar bewußtes Aktualisierung seines Browsers vornimmt?
Durch Instantiierung des Formulars.
Klar, ich könnte vor jedem Insert abfragen, ob genau dieser Insert innerhalb der letzten 5 Minuten bereits getätigt wurde... bzw. dieser Eintrag vorliegt.
Nein eine FID im Formular, erzeugt durch einen Hash reicht.
Andernfalls, setze mit JS onsubmit den Submit Button auf dissabled.
Aber das lässt sich umgehen.
mfg Beat
Hello,
wer hat eine Idee, wie ich verhindern kann, dass ein User ein- und denselben Eintrag durch versehentliches oder gar bewußtes Aktualisierung seines Browsers vornimmt?
Sollte heißen: "wie kann ich einen Mehrfacheintrag in meiner Datenbank durch erneuten Request vom Browser verhindern?"
Gib Deinen Requests eine Unique-Request-ID mit und speichere die in einer Unique-Spalte der Tabelle ab. Dann kann kein Request aus demselben Formular bearbeitet werden.
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg
Gib Deinen Requests eine Unique-Request-ID mit und speichere die in einer Unique-Spalte der Tabelle ab. Dann kann kein Request aus demselben Formular bearbeitet werden.
Hi Tom,
sehr gute Idee!!
Wie geht man dabei aber genau vor?
Ist es sinnvoll, hierzu eine Tabelle in mysql anzulegen, die eine
und dann 3 Funktionen schreibt, wobei
die 1) Die ID generiert, sie mit dem Wert "0" in die Tabelle einträgt
die 2) den Eintrag vornimmt und
die 3) das Vorhandenseins des Eintrags und der
oder habe ich da etwas missverstanden?
Grüße
Fred
P.S: Danke auch an die anderen Antworter!
Hello,
es reicht, in der betroffenen Tabelle eine Unique-ID zu führen.
Dazu ist z.B. die $_SERVER['UNIQUE_ID'] geeignet, wenm sie von Deinem Apache-Webserver bereitgestellt wird. Andere Webserver stellen ggf. andere Unique-IDs zur Verfügung oder auch nicht. Dann musst Du Dir eben selber eine basteln.
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg
Hallo,
wer hat eine Idee, wie ich verhindern kann, dass ein User ein- und denselben Eintrag durch versehentliches oder gar bewußtes Aktualisierung seines Browsers vornimmt?
Ich mache das (meistens) so, dass nach einem Submit, was einen "Insert" ausgelöst hat, der Browser auf eine Antwortseite umgeleitet wird; diese Antwortseite kann dann jeder so oft reloaden, wie er will.
Ja, es ist tatsächlich so, dass selbst gestandene ITler durch die POP-Up-Nachfrage "Daten erneut senden/Abbrechen" etwas verwirrt sein können (Request Method POST).
Hotte