PHP Warenkorb

baserider

Well-known member
ID: 174417
L
10 März 2007
682
23
Hi,

ich habe den Warenkorb in einer Session gespeichert, auch mit Preisen. Kann man die Preise dort lassen oder sollte man eher die Preise nochmal neu berechnen anhand der gespeicherten Id's zum Produkt und dann den Preis aus der Session nehmen?
 
In jedem Fall neu berechnen! Stell dir den Super-GAU vor, wenn du einen falschen Preis im Shop hast, die Änderung aber aufgrund der Speicherung des Preises in der Session, nicht bei allen Usern ankommt.
 
Ich schließe mich Paddya an, aber an einer Stelle muss der Preis in die Session:

Wenn du auf der letzten Seite der Bestellung bist und diese bestätigen musst, müssen die Preise in der Session sein, denn der Kunde schließt mit dir einen Vertrag über die Übersicht der Artikel mit den Preisen wie er sie gerade sieht.
Wenn die Preise beim Auswerten der Bestellbestätigung des Users wieder geladen werden, hast du das Problem, dass du dem Kunden eine Bestellung bestätigst, mit falschen Preisen.

Lösung des Problems:
Pack die Preise bei der Ansicht der Bestellbestätigung in die Session und wenn der Kunde diese Übersicht bestätigt, lädst du die Preise wieder aus der Datenbank, sollten sich die Preise aus Session und DB unterscheiden, kannst du dann entweder die Bestellung zulassen oder sonstwie eingreifen.
 
Wenn du auf der letzten Seite der Bestellung bist und diese bestätigen musst, müssen die Preise in der Session sein, denn der Kunde schließt mit dir einen Vertrag über die Übersicht der Artikel mit den Preisen wie er sie gerade sieht.
Wenn die Preise beim Auswerten der Bestellbestätigung des Users wieder geladen werden, hast du das Problem, dass du dem Kunden eine Bestellung bestätigst, mit falschen Preisen.

So hatte ich es eigetlich auch gemeint.
Der User hat sich etwas ausgewählt und fügt den Artikel dem Warenkorb hinzu, hierbei wird auch der Preis mit gespeichert. Bis zu Bestätigung bleibt alles in der Session und danch wird die Session gelöscht und die Bestellung in der Datenbank behalten.
 
Das ist aber nicht was ich geschrieben habe, sondern auch genau das, was paddya angeprangert hat.

Um es zu verdeutlichen: Was passiert in deinem Modell, wenn jemand einen Artikel im Warenkorb hat und du änderst den Preis des Produktes.
 
Ja dann würde ich es so machen, wie du schon vorgeschlagen hast. Falls sich die Preise unterscheiden muss ich eingreifen. Als Preis würde dann der Preis aus der Datenbank gelten
 
Lösung des Problems:
Pack die Preise bei der Ansicht der Bestellbestätigung in die Session und wenn der Kunde diese Übersicht bestätigt, lädst du die Preise wieder aus der Datenbank, sollten sich die Preise aus Session und DB unterscheiden, kannst du dann entweder die Bestellung zulassen oder sonstwie eingreifen.

Was ich hier nicht ganz verstehe, warum dann überhaupt in ner Session speichern? Der Kunde sieht doch die Preise so wie sie gereade sind auch beim Holen der Werte aus der DB
 
na, wenn der User das letzte Mal seine Übersicht zum Bestätigen sieht und wenn die Bestellung in die DB eingetragen wird, das sind 2 verschiedene PHP-Requests, von daher kann mittendrin eine Änderung stattfinden.
 
Aber wenn der User das letzte mal seine Bestellung sieht und die Werte aus der DB kommen, dann kann ja bis zum abschicken sich auch etwas ändern. von daher müsste doch eigentlich gar kein Preis in der Session gespeichert werden. Ich hole ihn mir dann immer aktuell
 
Aber in dem Moment wo er das abschickt, geht er einen Vertrag mit dir ein, mit den Preisen, die der User sieht, nicht die du in der Zwischenzeit noch geändert hast ;)

Wenn du bei Amazon etwas für 50€ kaufst und in dem Moment zwischen deinem Bestellung abschicken und "Bestellung erfolgt" der Preis um 20€ erhöht wird und du somit die Ware für 70€ kaufen sollst, würdest du auch nicht gerade glücklich sein oder?
 
Wenn du bei Amazon etwas für 50€ kaufst und in dem Moment zwischen deinem Bestellung abschicken und "Bestellung erfolgt" der Preis um 20€ erhöht wird und du somit die Ware für 70€ kaufen sollst, würdest du auch nicht gerade glücklich sein oder?

nee in der Tat nich :) Aber das erreiche ich ja dann auch ohne Session. Ich zieh den aktuellen Wert aus der DB und in der Zwischenzeit ändern sich die Preise, dann habe ich ja das gleiche Szenario :)