tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
7
ZUGRIFFE
229
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    supachecka supachecka ist offline Mitglied
    Registriert seit
    Apr 2007
    Beiträge
    21
    Hallo,

    ich habe mal ein etwas anderes Problem. Ich bastel gerade ein Feedbackformular und will natürlich verhindern, dass Posts doppelt versendet werden. Das habe ich auch hinbekommen wie hier beschrieben:
    http://www.selfphp.de/kochbuch/kochbuch.php?code=21

    Nun mein Problem: Der User kann das Formular nur einmal absenden, auch wenn er es nachträglich mit anderen Daten füllt um zb etwas zu ergänzen...

    Zusammengefasst:
    Doppel versenden mit Submit-Button -> ja
    Doppel versenden, durch Seitenaktualisierung oder durch Zurückbutton -> nein

    Ich hoffe mein Problem ist verständlich und ihr könnt mir ob und wie das geht?
    Geändert von supachecka (29.11.07 um 16:57 Uhr)
     

  2. #2
    Papier Papier ist offline Mitglied Bronze
    Registriert seit
    Jul 2003
    Beiträge
    43
    Du könntest du checkID aus den eingegebenen Daten und der IP-Adresse des Benutzers erstellen lassen anstatt aus der Zeit.

    $checkid = md5($_POST['vorname'] . $_POST['name'] . $_SERVER['REMOTE_ADDR']);

    Dann musst du die auch nicht mehr im Formular übergeben, sondern immer vor dem Suchen der ckeckID in der Datenbank erstellen.
     

  3. #3
    supachecka supachecka ist offline Mitglied
    Registriert seit
    Apr 2007
    Beiträge
    21
    Aber würde ich so nicht jedem die Möglichkeit nehmen, zb zu einem Thema wie hier im Forum später nocheinmal ein Kommentar abzugeben?
     

  4. #4
    Papier Papier ist offline Mitglied Bronze
    Registriert seit
    Jul 2003
    Beiträge
    43
    Das kommt darauf an, welche Daten du in die Berechnung der Prüfsumme einfließen lässt. Wenn du den Wert nur aus Name und IP berechnen lässt, dann wird nur ein Eintrag pro Name und IP erlaubt, daher solltest du vielleicht noch den Inhalt und die Kategorie dazunehmen.

    Zusätzlich sollte man noch erwähnen, dass eine sehr geringe Chance besteht, dass ein berechtigter Eintrag blockiert wird. Ein md5-Hash auch "nur" 128 Bit lang, es gibt also immerhin 2^128 verschiedene Werte. Auf 128 Bit kommt man allerdings auch schon mit der IP Adresse (32 Bit) und 16 lesbaren Zeichen (ca. 6 Bit), es gibt also sicher wesentlich mehr verschiedene Einträge, als md5-Hashs. Du könntest die Chance auf einen solchen Zufall noch weiter minimieren, wenn du die gespeicherten Prüfsummen einige Tage nach dem Eintragen wieder löschst.
     

  5. #5
    supachecka supachecka ist offline Mitglied
    Registriert seit
    Apr 2007
    Beiträge
    21
    Würde also bedeuten,wenn ich einen Teil der Nachricht und den Namen mit in die CheckID einbeziehe, kann ich mir ziemlich sicher sein, dass der Eintrag nicht doppelt erfolg.

    Gut danke ich denke das hab ich verstanden...
     

  6. #6
    Avatar von Flex
    Flex Flex ist offline (aka Felix Jacobi)
    tutorials.de Moderator
    Registriert seit
    Nov 2001
    Ort
    Wuppertal
    Beiträge
    5.295
    Blog-Einträge
    65
    Einfachste Möglichkeit dieses "Risiko" zu minimieren, wäre einfach sha1() einzusetzen.
    40-Byte Hash (bzw. 160bit).
     
    KIDS Kinderbetreuungsdienst
    Xing

    "When you play the game of thrones, you win or you die. There is no middle ground."
    by Cersei Lannister in "A Game Of Thrones"

  7. #7
    supachecka supachecka ist offline Mitglied
    Registriert seit
    Apr 2007
    Beiträge
    21
    Vielleicht fehlt mir doch noch ein bisschen das Verständnis für die Sache. Also eigentlich dachte ich dass aus einem Wert immer der selbe Hashwert ermittelt wird, soweit doch richtig oder?
    Deswegen versteh ich nicht warum das das "Risiko" minimiert, dass ein Formular mit den selben Daten vom selben User doppelt abgeschickt wird und in die Datenbank eingetragen wird.

    Meiner Meinung nach geht es doch nur um den Inhalt der Felder, oder lieg ich da falsch. Kann mir das wer erklären? Bin noch mehr verwirrt als vorher...
     

  8. #8
    Avatar von Flex
    Flex Flex ist offline (aka Felix Jacobi)
    tutorials.de Moderator
    Registriert seit
    Nov 2001
    Ort
    Wuppertal
    Beiträge
    5.295
    Blog-Einträge
    65
    Es gibt sogenannte Kollisionen bei Prüfsummen.

    Sprich zwei unterschiedliche Werte können die selbe Prüfsumme ergeben.
    Es ist selten, aber es kann passieren. Deshalb sollte man (meiner Meinung nach grundsätzlich) eher sha1 als md5 nutzen.
     
    KIDS Kinderbetreuungsdienst
    Xing

    "When you play the game of thrones, you win or you die. There is no middle ground."
    by Cersei Lannister in "A Game Of Thrones"

Ähnliche Themen

  1. mehrfaches ausloggen verhindern
    Von Sketty im Forum PHP
    Antworten: 11
    Letzter Beitrag: 11.11.08, 14:41
  2. Mehrfaches absenden von Formular verhindern
    Von Peter Klein im Forum PHP
    Antworten: 11
    Letzter Beitrag: 06.09.08, 17:24
  3. Mehrfaches.. Problem...
    Von S-lord im Forum PHP
    Antworten: 8
    Letzter Beitrag: 19.12.07, 17:51
  4. Antworten: 0
    Letzter Beitrag: 28.04.05, 11:04
  5. Absenden Button: JA, Absenden Link: Wie?
    Von stellenureinefrage im Forum HTML & XHTML
    Antworten: 2
    Letzter Beitrag: 27.03.04, 11:26