Karli: Vermeiden von Doppelpostings

Hallo,

in meinem in php erstelltem Gästebuch, sollen Doppelpostings (entstehen nach Absenden einer Nachricht durch klicken auf "aktualisieren") vermieden werden.

Was sind übliche Methoden um Doppelpostings zu vermeiden?

NAchricht in einer Session speichern?

Vielen Dank

Karli

  1. Hi Karli,

    ich würde da ansetzen, wie bei einer IP-Sperre eines Counters ansetzen.

    Die IP des Absenders nach dem Abschicken inklusive Uhrzeit speichern und bei einer IP-Dopplung nachsehen, ob der letzte Eintrag schon eine bestimmte Zeit her ist. Sollte das nicht der Fall sein, wird der Eintrag eben nicht gespeichert. Ist der letzte Eintrag schon länger her, kann ja die IP und die Zeit dann gelöscht werden. Das ganze müsste natürlich öfter "bereinigt" werden. Müsste aber auch eine Möglichkeit geben, das ganze etwas zu automatisieren...

    Viele Grüße,
    Ben

    1. ich würde da ansetzen, wie bei einer IP-Sperre eines Counters ansetzen.

      Hi Ben,

      vielen Dank, das hab ich mir auch schon überlegt.
      Mein Problem ist jedoch folgendes:
      Über mein Gästebuch "unterhalten" sich oft Benutzer meiner Seite. d.H: alle 1 - 2 Minuten ein Posting.
      Andere posten etwas und lassen den Browser offen. Eine Stunde später klicken Sie dann auf aktualisieren und so entstehen dann die Doppelpostings.

      Mit ist aber jetzt schon selber die Idee gekommen... Ich vergleiche einfach vor jedem Posting den Inhalt und den Namen mit den letzten vorhandenen Datensätzen in der Datenbank.
      Wenn es eine Übereinstimmung gibt, dann werden die die Daten einfach nicht gespeichert.

      Oder hat noch jemand eine bessere Idee?

      Vielen Dank

      Karli

    2. Hi Ben,

      ich würde da ansetzen, wie bei einer IP-Sperre eines Counters ansetzen. [...]

      Die IP ist für solche Zwecke absolut ungeeignet!
      Ein Benutzer kann bei zwei unmittelbar aufeinanderfolgenden Zugriffen unteschiedliche IPs haben und viele Benutzer können die gleiche IP haben (T-Online oder AOL-Proxy z.b.).

      Für einen sowieso sinnleeren Counter ist das natürlich egal aber wenns die Hauptfunktionalität einer Seite betrifft sollte man schon darauf Rücksicht nehmen, dass es nicht nur mit dem eigenen Internetzugang und dem von den drei Kumpels geht die man gefragt hat ;-)

      Gruss,
        Carsten

  2. in meinem in php erstelltem Gästebuch, sollen Doppelpostings (entstehen nach Absenden einer Nachricht durch klicken auf "aktualisieren") vermieden werden.

    Verpasse dem Formular ein <input hidden>-Element mit einem Zähler oder sonst irgendwie einzigartigen Wert. In vielen Sprachen steht eine Funktion à la uniqueid() zum erzeugen so eines Wertes zur Verfügung, ansonsten kannst Du auch die aktuelle Zeit mit einer angehängten Zufallszahl nehmen.

    Diesen Wert speicherst Du zum Beispiel zusammen mit dem neuen Eintrag. Doppelt abgeschickte Formulare kannst Du erkennen, indem Du vor dem Abspeichern prüfst, ob der mitgeschickte Wert schon in Deiner Datenbank steht.

    Gruß,
      soenk.e

    PS: Ist nicht meine Idee, sondern die des hiesigen Forumgottes ;)

    1. Verpasse dem Formular ein <input hidden>-Element mit einem Zähler oder sonst irgendwie einzigartigen Wert. In vielen Sprachen steht eine Funktion à la uniqueid() zum erzeugen so eines Wertes zur Verfügung, ansonsten kannst Du auch die aktuelle Zeit mit einer angehängten Zufallszahl nehmen.

      Diesen Wert speicherst Du zum Beispiel zusammen mit dem neuen Eintrag. Doppelt abgeschickte Formulare kannst Du erkennen, indem Du vor dem Abspeichern prüfst, ob der mitgeschickte Wert schon in Deiner Datenbank steht.

      Hallo,

      vielen Dank!
      gute Idee, so werd ichs machen.

      Viele Grüße

      Karli