mikrocontroller.net

Forum: www.mikrocontroller.net Doppelbeiträge


Autor: smay4finger. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Andreas,

wie kommen eigentlich die ganzen Doppel-Beiträge zustande?

Kann man das nicht irgendwie verhindern?

mfg, Stefan.

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die Doppelpostings entstehen, weil Leute nach dem Absenden ihres Textes
den "zurück"-Knopf ihres Browsers anklicken, was dafür sorgt, daß der
ganze POST-Inhalt nochmal gesendet wird (und nochmal, und nochmal ...).

Vernünftige Browser fragen in so einem Fall den Benutzer, ob er das
auch wirklich so will; wer dann immer noch auf "zurück" klickt,
erzeugt willentlich und absichtlich Mehrfachpostings.

Mit etwas Selbstdisziplin lassen sich also Mehrfachpostings vermeiden.


Andreas könnte die Forensoftware aber dahingehend ändern, daß an der
Stelle, an der der Hinweis angezeigt wird, daß der Beitrag gepostet
wurde, nach einem Timeout von 1..2 sec automatisch die
Artikelübersichtsseite oder aber der Artikel selbst geladen wird.

Nur hat Andreas vermutlich wichtigeres zu tun, als ständig an der (im
übrigen hervorragenden!) Forensoftware herumzuschrauben ...

Autor: smay4finger. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mein Anliegen ist, diese Doppelpostings zu kritisieren, nicht die
Forensoftware insgesamt. Ich bin, bis auf ein paar Macken, sehr
zufrieden. Mit den Macken kann man leben, auch mit den Doppelpostings.
Kritik soll in meinen Augen zu Verbesserungen führen. Wenn Andreas
dafür Zeit hat, schön. Wenn nicht, dann eben nicht.

Selbstdisziplin ist so eine Sache.... :-)

mfg, Stefan.

Autor: Benedikt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Es gibt übrigends Doppelpostings bei denen Minuten (manchmal sogar eine
halbe Stunde) dazwischen liegt. Und das sind nicht gerade wenig,
zumindest habe ich das schon häufiger gesehen.

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die sind mir auch schon aufgefallen. Die Ursachen lassen sich ohne
genaueres Kennen der Hintergründe kaum erahnen.
Man sollte mal einen der Mehrfachposter, die das hinbekommen, danach
befragen, was exakt sie da angestellt haben mögen ...
(bevor wir ihnen jetzt allgemeine Idiotie unterstellen)

Autor: Dennis (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Soll ja auch mal vorkommen, daß jemand seinen Rechner zwischendurch
verläßt, um etwas anderes zu machen. Manche Tätigkeiten dauern evtl.
auch mal ne halbe Stunde, und wenn man dann zurückkommt und auf
"zurück" klickt könnte sowas doch passieren.

Autor: Tobi H. (tobi-) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Oder einfach, um den Thread noch einmal nach oben zu pushen, weil sie
sich ignoriert fühlen

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Moderne Tabbed Browsing Browser haben ein Sitzungsmanagement.

Wenn man den Rechner runterfährt und in 3-7 Fenstern 5-30 Tabs offen
hat, werden die nach den Einloggen alle wiederhergestellt und setzen
genau die Requests ab, die zur Anzeige der abgespeicherten URLs nötig
sind.

Jetzt muß man nur noch in einigen der 15-210 Tabs
 * was bestellt haben
 * ein Posting submitted haben
 * irgendeinen anderen POST Request abgesetzt haben
und man postet doppelt, bestellt mehrfach, sperrt sich durch dauerndes
wiedereinloggen mit der falschen SessionID diverse Accounts.

So einfach kann es sein.

<Peter macht ne Abstimmung auf>

Ich vote deshalb aus den Grund daß der Fehler sehr verteilt bei sehr
vielen Menschen und sehr vielen Gelegenheiten liegt, für ein Abstellen
in der Forumssoftware.



</Peter macht ne Abstimmung auf>

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Müsste doch ziemlich einfach gehen, wenn man der Tabelle, welche die
Postings hält, eine UNIQUE Spalte mit einer MD5- oder SHA1-Checksumme
über die POST-Parameter, die zu diesem Posting geführt haben, verpasst,
oder? Dann gibt es beim 2 -n ten Submit einen Fehler...

Autor: ___Klaus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nein, mann muss einfach nach dem Post ein Redirect machen. Ich kenne
mich da nicht so aus, habe aber mal einen Artikel gelesen, da ging es
darum, nach jedem Post ein Get und Redirect zu machen. Da das Problem
in vielen Foren auftritt, gibt es dazu viele Tutorials.

Autor: Tobias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Oder einen Timeout einfügen, dass erst nach einer gewissen Zeit ein
neues Posting von einer bestimmten IP erfolgen darf. Würde natürlich
das Problem lösen, wenn mehrere Minuten dazwischen liegen.

Autor: Ingo H. (putzlowitsch)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nee, das einfachste wäre schon so ein Redirect.
Im Antwort-Header einfach z.B. ein

Location: http://www.mikrocontroller.net/forum/read-5-412561.html#new

senden, und man landet man automatisch auf dem gerade eingetragenen
Beitrag.
Auch die Bestätigung, das der Beitrag gespeicher wurde, ist dann nicht
erforderlich, man sieht es ja sofort :-)
Nur im Fehrlerfall sollte natürlich kein Redirect kommen, sondern eine
passende Fehlerbehandlung.

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sauberer ist das mit dem 302 auf den neuesten Beitrag schon, als die
"Ihr Beitrag wurde gespeichert" -Seite.

Sollte auf jeden Fall sein.

Die "Hashsumme pro Beitrag"-Lösung hätte den Vorteil, daß man (auch
als Schad-/SPAM-Software, die ihre POST-Requests selber bastelt und
nicht die Forumssoftware zur Generierung der POST-Requests benutzt)
keinen Betrag absichtlich doppelt absetzen kann, weil dann die DB sich
dann beschwerte, daß genau dieser Beitrag schon da sei.

Autor: Sebastian B. (lufti)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
In PHP mache ich das bei meinen Seiten immer so, dass ich einfach einen
aktuellen Timestamp mitgebe ..

  <input type="hidden" name="form_timestamp" value="<php echo
time(); ?>

.. und nach abschicken überprüfe, ob in diesem Forum, mit diesem
Betreff und diesem Text schon ein Beitrag vorhanden ist.

Wenn er vorhanden ist, wird der Beitrag nur erstellt, wenn sein
Zeitstempel einen gewissen Wert überschritten hat. z.B 24h

  $save = false;
  if (time() - $_POST['form_timestamp'] > 60*60*24) $save = true;

Somit verhinderst du doppelposts effektiv und kannst trotzdem einen
Thread von vor 2 Jahren neueröffnen.

Leider gibt es da noch die Leute mit Kurbelmodem, die in letzter
Sekunde noch einen Rechtschreibfehler beheben und auf Submit klicken,
nach dem die Formulardaten schon übertragen, die nächste Seite aber
noch nicht gewechselt/geladen wurde.

Die Kannst du aber auch mit dem gleichen Prinzip verhindern!
Da niemand 1min zum Laden deiner Seite benötigt, wohl aber mehr für das
Schreiben eines Threads, stellst du hier eine Post-Pause ein. z.B

  $save2 = false;
  if (time() - $_POST['form_timestamp'] > 60) $save2 = true;

Der Threadschreiber ist nach dem übertragen somit für 60s
schreibgelähmt.

Die ganze Sache stellt überhaupt kein Problem da, .. meines Erachtens.

Grüßchen Sebastian

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.