Encoder: Cache oder globale Session gesucht

Hallo Leute

Gerade sitze ich an einem Problem, dass ich Daten eines Formulars nur einmalig verarbeiten will. Ich habe allerdings nichts (einfaches) um mir eine Zufallskennung des Formulars zu merken, so wie das ja eigentlich üblich ist.

Dateien könnte ich natürlich verwenden.
Eine andere Überlegung ist z.B. Sessions zu missbrauchen. Die Zufallszahl aus dem Formular wird als SessionID genutzt. Gibt es die Session schon, wird das Formular verworfen. Alle länger nicht mehr angefassten Sessions verschwinden von selbst.
Ist das meine Lösung? Oder gibt es für solche Zwecke noch was schöneres?

  1. Hallo,

    Ich habe allerdings nichts (einfaches) um mir eine Zufallskennung des Formulars zu merken, so wie das ja eigentlich üblich ist. … Eine andere Überlegung ist z.B. Sessions zu missbrauchen.

    Wieso ist das ein Missbrauch? Genau dafür sind Sessions gemacht, um mehrere Requests miteinander zu verknüpfen und serverseitig Daten in diesem Kontext zu speichern.

    Du überprüfst, ob der übermittelte Token dem Token auf dem Server (in den Sessiondaten) übereinstimmt.

    Die Zufallszahl aus dem Formular wird als SessionID genutzt.

    Keine gute Idee, das solltest du trennen. (Was auch viel einfacher ist, als es *nicht* zu trennen.)

    Die Session bleibt immer dieselbe, die Zufallszahl aus dem Formular hingegen ändert sich während der Session, z.B. wenn ich das Formular zweimal korrekt ausfülle.

    Mathias

    1. Ähm... ja.
      So einfach könnts sein. Und ich denk da dreimal ums Eck rum. Ab und zu wär einfach ein gedanklicher Reset gut...
      Danke fürs mitdenken :-)

    2. Jetzt gibts allerdings noch ein Problem: es geht nicht so wie gedacht.
      Das ist mein Code, formid ist das Feld aus dem Formular mit der Zufallszahl als Wert:

      $formid = $_POST["formid"];
      if (isset($_SESSION[$formid]))
      {
        Fehlerhandling
        return;
      }

      hier werden die Daten verarbeitet

      $_SESSION[$formid] = 1; // das soll die $formid "registrieren"

      Nur isset($_SESSION[$formid]) ist nie true, auch wenn ich ein und dasselbe Formular immer wieder reloade.
      Die SessionID wird im Formular mit übergeben, session_start() rufe ich auch auf. Mit $_SESSION["test"] stelle ich fest dass sehr wohl Werte zwischen den beiden Aufrufen gemerkt werden. Es gibt also wirklich eine Session.
      Was läuft da noch schief?