basti: Problem Warenkorb vor/zurück?!?

Hi zusammen!
Ich bin gerade dabei mir mit php meinen eigenen onlineshop zu basteln. Soweit so gut, nur ein kleines problem habe ich noch. Artikel werden über mehrere <form> in den Warenkorb/tabelle gelegt....über eine variable z.B. option wird erkannt daß der artikel in die Tabelle gelegt werden muß. nun habe ich aber das problem, daß man sobald man den zurück button beim IE/NS/OP drückt und dann wieder nach vorne logischerweise den artikel doppelt in der Tabelle hat. wie lässt sich sowas am besten verhindern? aber bitte keine JS lösung.......
bin über jeden Tipp, jede Hilfe dankbar
gruß basti
basti.mueller@web.de

  1. Hi

    Gib doch jeder Seite eine art eindeutige ID mit auf den weg (z.B. in einem hidden-Feld). du schaust nach, ob diese bereits in der Datenbank steht, und wenn ja, dann wurde die Seite bereits gesendet. Die Schlüssel können nach z.B. 2 Tagen verfalllen.

    Peter

  2. Artikel werden über mehrere <form> in den Warenkorb/tabelle gelegt....über eine variable z.B. option wird erkannt daß der artikel in die Tabelle gelegt werden muß.

    Was für eine Variable? Wieso "zum Beispiel"? Und woher bekommt die Variable ihren Inhalt? Oder meinst Du ein Element des Formulars oder einen Parameter in der URL?

    Ein wenig Einblick in den Quelltext hätte (wie so oft) sehr viel geholfen, mehr als jede Erklärung.

    nun habe ich aber das problem, daß man sobald man den zurück button beim IE/NS/OP drückt und dann wieder nach vorne logischerweise den artikel doppelt in der Tabelle hat.

    So logisch ist das nicht. In der Regel wird man heutzutage von den Browsern gewarnt, bevor man ein Formular zweimal abschickt.

    wie lässt sich sowas am besten verhindern?

    Das kommt darauf an, wie Du den In-den-Warenkorb-legen-Vorgang durchführst (siehe option-Problem oben).

    Falls Du ein echtes Formular benutzt, kannst Du doppeltes Absenden dadurch verhindern, daß Du jedem Formular eine eindeutige Seriennummer gibst. Für jedes vom Benutzer abgeschickte Formular speicherst Du diese Seriennummer in einer Liste. Mehrmals abgeschickte Formulare erkennst Du daran, daß die mitgelieferte Seriennummer bereits in Deiner Liste enthalten ist.
    Dieses Prinzip wird übrigens hier im Forum benutzt.

    Bei Deinem speziellen Problem eines Kataloges hilft Dir allerdings eine andere Methode etwas besser: Als Antwort auf ein empfangenes Formular sendest Du statt einer normalen Katalogseite eine Weiterleitung mit dem Code 303 zur gewünschten Katalogseite. 303 ist extra für POST-Skripte gedacht, die selbst keine ausführlich Antwort zur Verfügung stellen. Siehe http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.3.4.
    Soweit mir bekannt, sollte damit das Blätterproblem beseitigt sein, da der Browser die POST-Antwort nicht im Cache behält, sondern lediglich die Seite, auf die weitergeleitet wurde.

    Gruß,
      soenk.e

  3. Hallo,

    Jeder Seite nur EIN <form> geben und die Zwischenergebnisse in einer Session ablegen.

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

    Tom

    --
    Intelligenz ist die Fähigkeit, aus Fehlern Anderer zu lernen und Mut die, eigene zu machen.