Fred: Ungewollte mysql-inserts durch Browseraktualisierung verhindern?

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

  1. 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

    --
    ><o(((°>           ><o(((°>
       <°)))o><                     ><o(((°>o
    Der Valigator leibt diese Fische
  2. 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

    --
    Nur selber lernen macht schlau
    http://bergpost.annerschbarrich.de
    1. 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

      • zufällig erstellte Id (welche aus dem Formular kommt)
      • und dazugehörig in der nächsten Spalte eine "1" oder "0" abspeichert

      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!

      1. 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

        --
        Nur selber lernen macht schlau
        http://bergpost.annerschbarrich.de
  3. 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

    --
    Auch verwirrend: Main Post (Würzburg)