Tom: Formulare und ihre Eindeutigkeit, Multipost

Hello,

wir haben das hier ja die letzten Wochen schon oft diskutiert und ich habe auch selber meine Versuche dazu gemacht und Vorschläge unterbreitet. Nun möchte ich die Implementierung der "Form-ID" in meinen "Universal-Formcontroller" vornehmen und mir kein Eigentor schießen.

Durch  new_form($con, $formtype, $parent, $description="")  instantiiere ich ein neues Formular. Die Funktion erzeugt eine Form-ID und liefert das Form an den Client aus.

In der Session des Users oder in einer Tabelle wird

$_SESSION["_forms"][$formid]["timestamp"] = $time();
$_SESSION["_forms"][$formid]["parent"] = $parent;
$_SESSION["_forms"][$formid]["formtype"] = "liste";  # oder "detail"

usw.

eingetragen.

$formid und $timestamp werden im Formular in hidden-Variablen mitgeführt.
Beim nächsten Post, wird nun verglichen, ob es das Form schon gibt und ob es schon abgearbeitet wurde.

Ist es nun wahrscheinlich, dass ein Multipost innerhalb eines Timestamps stattfinden kann? Sollte ich lieber microtime() benutzen? Auf die paar Bytes mehr wird es wahrscheinlich bei dem geplanten Speicherklotz auch nicht mehr ankommen. Oder kann ich mir das sparen? Sollte man die in der Session Mircrotime für das Formular nochmals md5() verschlüsseln, damit das nicht so durchsichtig nachvollziehbar wird? Oder ist das schon paranoid?

In der Session brauche ich die Time, da ich zu alte Forms von Zeit zu Zeit aufräumen muss. Die Sessiondateien sind persistent bei mir.

Liebe Grüße aus http://www.braunschweig.de

Tom

--
Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
  1. Hello,

    Ist es nun wahrscheinlich, dass ein Multipost innerhalb eines Timestamps stattfinden kann? Sollte ich lieber microtime() benutzen?

    Ja, wenn Sekunden die kleinste Einheit sind. In PERL gibts z.B. das Modul
    Time::HiRes

    damit werden timestamps auf die ms genau und die Wahrscheinlichkeit, dass 2 prozesse denselbem TS bekommen sinkt auf ein Minimum.

    Noch besser: TS + PID

    und das noch evntl. mit MD5 oder crypt encrypten...

    Erwin

    --
    SELFforum - Das Tor zur Welt!
    Theoretiker: Wie kommt das Kupfer in die Leitung?
    Praktiker: Wie kommt der Strom in die Leitung?
    1. Hello,

      damit werden timestamps auf die ms genau und die Wahrscheinlichkeit, dass 2 prozesse denselbem TS bekommen sinkt auf ein Minimum.

      Noch besser: TS + PID

      und das noch evntl. mit MD5 oder crypt encrypten...

      Ja, es müsste dann sowieso schon dasselbe Formular sein, dass innerhalb einer Sekunde zweimal beim Server landet. Ich gebe ja jedem Formular eine Formular-ID, auch innerhalb einer Seite, wenn diese mehrere <form> enthält. Dadurch wird die Datenbindung gekennzeichnet. Aber ich nehme da nun auch Microsecond() und md5(), damits ein bisschen geheimnisvoller wird ;-)

      Liebe Grüße aus http://www.braunschweig.de

      Tom

      --
      Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen