Herbert: Warenkorb ID (Reload-Blocking)

Hallo Leute,

ich bräuchte mal einen Tipp für eine Reload-Sperre.

Mein Problem:
Im Navigationsframe wird per SSI ein Link mit einer  Warenkorb-ID($wkid=time();) definiert. Diese ID wird beim Aufruf des Shop-Systems übergeben und stets weiter verwendet. Wenn im Shop-Frame ein Seiten Reload stattfindet ist das kein Problem, da sich die ID nicht
ändert. Wenn jedoch im Navigationsframe ein Reload stattfindet ändert sich logischerweise die ID. Bei erneutem Aufruf des Shopsystems über die Navigationsleiste stimmt die ID nicht mehr und der Warenkorb ist leer.

Meine Frage:
Kann mir jemand den entscheidenden Tipp geben wie ich dieses Problem ohne Cookies umgehen kann.
Oder vielleicht hat jemand eine alternative, bessere Lösung für eine Warenkorb-ID (ohne Benutzeranmeldung)

Viele Gruesse

Herbert

  1. Hi,

    Kann mir jemand den entscheidenden Tipp geben wie ich dieses Problem ohne Cookies umgehen kann.
    Oder vielleicht hat jemand eine alternative, bessere Lösung für eine Warenkorb-ID (ohne Benutzeranmeldung)

    Du mußt die ID _vorher_ erstellen, also z.B. im Link, der auf die Shopseite führt (<a href="shop.pl?id=xyz">).

    Übrigens ist time() alleine nicht ausreichend. Füge der ID noch $$ hinzu, dann ist sie eindeutig.

    Cheatah

    1. Hallo Cheatah,

      Hi,

      Kann mir jemand den entscheidenden Tipp geben wie ich dieses Problem ohne Cookies umgehen kann.
      Oder vielleicht hat jemand eine alternative, bessere Lösung für eine Warenkorb-ID (ohne Benutzeranmeldung)

      Du mußt die ID _vorher_ erstellen, also z.B. im Link, der auf die Shopseite führt (<a href="shop.pl?id=xyz">).

      Genau das mach ich mit SSI. Nur wenn eben diese Seite(Navigationsframe) neu geladen wird ändert sich auch die ID. Normalerweise besteht kein Grund diese Seite neu zu laden, wenn aber doch ...

      Übrigens ist time() alleine nicht ausreichend. Füge der ID noch $$ hinzu, dann ist sie eindeutig.

      Guter Vorschlag die Prozess-Id hinzuzufügen.

      Cheatah

      1. Hi,

        Du mußt die ID _vorher_ erstellen, also z.B. im Link, der auf die Shopseite führt (<a href="shop.pl?id=xyz">).

        Genau das mach ich mit SSI. Nur wenn eben diese Seite(Navigationsframe) neu geladen wird ändert sich auch die ID. Normalerweise besteht kein Grund diese Seite neu zu laden, wenn aber doch ...

        ach so... Nun, dann bleibt nur noch die (suboptimale) Lösung, die ID-Generierung an die IP des Nutzers zu koppeln. Logge mit, von welcher IP zuletzt auf welche ID zugegriffen wurde (time()\tIP\tID), und wenn ein bestimmter Zeitabstand nicht überschritten wurde, benutze die ID erneut. Die Verwechslungsgefahr kannst Du nicht ausschließen, höchstens durch Koppelung der IP an HTTP_X_FORWARDED_FOR und USER_AGENT reduzieren.

        Wenn explizit auf eine (noch gültige) Session-ID zugegriffen wird, solltest Du diese natürlich in jedem Fall verwenden. Vielleicht mußte der Benutzer neu booten und hat jetzt eine andere IP...

        Cheatah

        1. Hallo Cheatah,

          danke für Deine Ausführungen.

          Hi,

          Du mußt die ID _vorher_ erstellen, also z.B. im Link, der auf die Shopseite führt (<a href="shop.pl?id=xyz">).

          Genau das mach ich mit SSI. Nur wenn eben diese Seite(Navigationsframe) neu geladen wird ändert sich auch die ID. Normalerweise besteht kein Grund diese Seite neu zu laden, wenn aber doch ...

          ach so... Nun, dann bleibt nur noch die (suboptimale) Lösung, die ID-Generierung an die IP des Nutzers zu koppeln. Logge mit, von welcher IP zuletzt auf welche ID zugegriffen wurde (time()\tIP\tID), und wenn ein bestimmter Zeitabstand nicht überschritten wurde, benutze die ID erneut. Die Verwechslungsgefahr kannst Du nicht ausschließen, höchstens durch Koppelung der IP an HTTP_X_FORWARDED_FOR und USER_AGENT reduzieren.

          An so etwas Änliches habe ich auch schon gedacht. Wie Du schon sagst leider nicht hundertprozentig.

          Vielleicht schreibe ich die ID doch in ein Cookie (wenn erlaubt)
          Wenn der Benutzer das nicht zulässt, dann hat er einfach Pech nach einem Reload.

          Wenn explizit auf eine (noch gültige) Session-ID zugegriffen wird, solltest Du diese natürlich in jedem Fall verwenden. Vielleicht mußte der Benutzer neu booten und hat jetzt eine andere IP...

          Cheatah

          Viele Gruesse

          Herbert

  2. Hi Herbert!

    Wenn jedoch im Navigationsframe ein Reload stattfindet [...]

    Ich schreibe auch gerade an einem ShopSystem und habe dieses Problem umgangen, indem ich keine Frames verwende. Ist zwar für dich wahrscheinlich keine praktikable Methode, da dein Shop schon fertig ist und auf Frames basiert, aber evtl. für die Zukunft.

    mfg
    jens

    1. Hi Herbert!

      Wenn jedoch im Navigationsframe ein Reload stattfindet [...]

      Ich schreibe auch gerade an einem ShopSystem und habe dieses Problem umgangen, indem ich keine Frames verwende. Ist zwar für dich wahrscheinlich keine praktikable Methode, da dein Shop schon fertig ist und auf Frames basiert, aber evtl. für die Zukunft.

      mfg

      »»  jens

      Hallo Jens,

      Mein Shop verwendet auch keine Frames. Das ganze System läuft in einem Frame ab. Aber der Link für den Aufruf des Shops wird per SSI erzeugt inkl. warenkorb-Id und steht in einem anderen Frame.

      Was passiert mit deinem Shop wenn er in einem Frame ablaufen soll und aus dem aufrufendem Frame erneut gestartet wird?

      Gruesse

      Herbert