Ticket #177 (closed Erweiterungswunsch: fixed)

Opened 6 months ago

Last modified 5 months ago

Jlog mag nicht mehrere Pingbacks gleichzeitig

Reported by: robertb Assigned to: jeena
Priority: major Milestone: Jlog 1.1.1
Component: Kernfunktion Version: 1.1.0
Keywords: Cc:

Description

Auf Grund der Art und Weise, wie Jlog Pingbacks speichert, ist es nicht möglich, mehrere Blogartikel gleichzeitig anzupingen. Der Grund ist das Feld sid in der Tabelle jlog_comments, welches nämlich mit dem Attribut UNIQUE versehen ist. Sollte das geändert werden oder lassen wir das aus Kompatibilität mit anderer Blog-Software?

Mögliche Ansatzpunkte wären das Versenden von Pings (jeweils um eine Sekunde verzögert) oder das Entfernen von UNIQUE.

Attachments

Change History

06/01/2008 10:01:35 PM changed by jeena

Ne wir müssen eigentlich nur die sid öfter verändern als einmal in der Sekunde. Bisher wird das so gemacht:

 function new_sid() {
  return $_SERVER["REMOTE_ADDR"]."-".time();
 }

Und in der DB ist das ein varchar(35) und da $_SERVERREMOTE_ADDR?."-".time() nur 20 Zeichen sind, können wir einfach noch eine randomzahl hinten dran hängen. Oder habt ihr bessere vorschläge?

Das UNIQUE ist gerade das was die sid sinnvoll macht. Gedacht ist das so, dass diese sid beim anzeigen des Kommentarformulars generiert wird und beim abspeichern in der DB gespeichert wird. Wenn man dann mit dem "back"-Button eine Seite zurück geht und das Formular noch einmal abschickt wird die gleiche sid versucht in die DB reinzuschreiben und somit ist klar dass das gleiche Formular zwei mal abgeschickt wurde was zu 99,9% ungewollt passiert.

Eigentlich dachte ich dass $_SERVERREMOTE_ADDR?."-".time() unik genug ist, aber vielleicht hast du recht.

06/01/2008 10:20:41 PM changed by jeena

  • owner set to jeena.
  • status changed from new to assigned.
  • version set to 1.1.0.

Ich hab das jetzt mal mit dieser Funktion ersetzt:

 function new_sid() {
     list($usec, $sec) = explode(' ', microtime());
     mt_srand((float) $sec + ((float) $usec * 100000));
     return $_SERVER["REMOTE_ADDR"]."-".time()."-".mt_rand(1000,9999);
 }

06/01/2008 10:22:13 PM changed by jeena

  • milestone set to Jlog 1.1.1.

06/18/2008 01:44:57 PM changed by driehle

Warum so kompliziert? ;-) Nutzt doch einfach direkt die Funktion uniqid(), welche PHP für solche Zwecke mitbringt.

Btw: Scheint als wäre das in [1728] bereits implementiert, also Ticket schließen nicht vergessen :-)

06/28/2008 03:16:40 PM changed by jeena

  • status changed from assigned to closed.
  • resolution set to fixed.

Ach uniqid() wäre doch viel zu einfach und außerdem kann man doch nicht alle PHP Funktionen auswendig kennen ;)


Add/Change #177 (Jlog mag nicht mehrere Pingbacks gleichzeitig)




Action