Tach Auge
Erstmal möchte ich Dir sehr für Dein ausführliches Posting danken.
Um einen Warenkorb zu befüllen, musst du nicht nur die Daten auf dem Server (zwischen)speichern, du musst sie auch dem einzelnen Besucher zuordnen können.
Genau da kommt die Session ins Spiel. Sie ermöglicht, dass sich der Benutzer durch eine ID wiedererkennen lässt.
OK, das habe ich erstmal soweit verstanden.
Die ID wird entweder als Cookie auf dem Rechner des Benutzers gespeichert ...
Funktioniert das denn auch, wenn der User in seinem Browser das Speichern
von cookies deaktiviert hat?
Ich habe mal irgendwi aufgeschnappt, dass dann solche
PHP-Session-Cookies trotzdem funktionieren sollen.
Stimmt das?
oder sie wird als Parameter an jeden Link angehängt und so bei jedem Aufruf an den Server übermittelt.
OK, verstehe.
Wie du mit diesem System die Informationen zu Preisen etc. lagern willst, ohne auf eine, wie auch immer geartete, Datenbank zurückzugreifen, ist mir allerdings schleierhaft. Du wirst ja nicht bei jedem Produkt im Warenkorblink eine ewig lange Kette von Parametern nach folgendem Schema übermitteln wollen.
http://example.com/shop/produkt_2455.html?produkt=2455&preis=25&farbe=schwarz
Bei meine Produkten wären es im Grunde nur 3 Parameter:
1. Eine Bestellnummer (würde ja sozusagen einer ID entsprechen)
2. Ein Produktname
3. Preis
Die Nachkommastellen beim Preis habe ich jetzt mal weggelassen, weil ich aus dem Stehgreif nicht weiß, wie der Punkt zu maskieren wäre. :-)
Meine Preis sind alle ohne Nachkommastellen und sollen es auch bleiben.
Ich hasse dieses 99 cent Zeugs, aber das ist eine andere Geschichte :-)
Mit diesem System wären Fälschungen Tür und Tor geöffnet. Jeder könnte den Preis nach eigenem Gusto festlegen. Damit das nicht passiert, müssen solche Informationen auf dem Server vorgehalten werden und nur für die verarbeitenden Skripte zugänglich sein.
Du meinst, es könnte jemand also dann sozusagen einfach selber die
entsprechende URL mit seinen eignen Parametern in den Browser
schreiben und somit den Warenkorb dann mit falsch auggepreisetn
Produkten füllen ... richtig?
Du wirst also nicht um eine Datenbank herumkommen, denn im Warenkorb musst du rechnen können. Ein Kunde könnte mehrere Stück eines Produktes oder verschiedene Produkte mit einem mal kaufen wollen/sollen. Also brauchst du die jeweiligen Preise zur Berechnung des Gesamtpreises.
Ich habe das bisher so gemacht.
Wenn ein Kunde ein Produkt z.B. 2 x kaufen will, muss er es einfach
2x in den Warenkorb schmeissen. Es gibt bei mir also bisher
keine Anzahl eines Produktes im Warenmkorb.
Bei meinen Produkten, die ja recht teuer sind, kommt es auch
sehr selten vor, dass Kunden einen Artikel mehrmals bestellen.
Aber klar, schöner wäre es natürlich schon, wenn der Kunde
die gewünschte Anzahl im Warenkob noch anpassen könnte.
Und ie Zusammenrechnerrei des Gesamtbetrages läuft bei mir
zur Zeit noch mit Javascript clienet-seitig.
Aber das will ich ja eben in Zukunft nicht mehr machen.
Legt der Kunde ein Produkt in den Warenkorb, kann mit der ID des Produkts, eventuellen Eigenschaften, der zu bestellenden Menge, die in der Session gespeichert werden, und dem Einzelpreis aus der DB immer der Gesamtpreis der Bestellung (zzgl. Versandkosten) errechnet werden.
OK, wenn z.B. nun die Session-ID nicht per Parameter weitergegeben wird,
sondern eben in einem Session-Cookie beim User gespeichert wird,
würde man doch da auch die zur Bestellung gehörenden Produtdaten
(Bestellnummer, Produktname, Preis) mit speichern, oder nicht?
So wären sie nicht in der URL lesbar und auch nicht so leicht zu fälschen.
Die Daten (der Datensatz) der Bestellung (Produkte, Mengen, persönliche Daten des Bestellers) landen wohl per Email bei dir.
Ja, genau, die werden vom Script dann letztendlich per E-Mail zu mir geschickt.
Aber auch hier ist eine Speicherung in einer DB (mehr als nur) sinnvoll. Einerseits kann die Email auf sich warten lassen, du hast also bei Zugriff auf die Daten in der DB eine Rückfallebene ...
Du meinst also eine Sicherung der Bestellung, falls einer der
E-Mails mal nicht bei mir ankommt?
andererseits kannst du dem Kunden, bei entsprechender Pflege der Datenbestände, einen Mehrwert z.B. in Form eines Auslieferungsstatus (Bestellung eigegangen, Lieferung zusammengestellt, verschickt) geben.
Das mache ich bisher sozusagen von Hand.
Und das kann auch in Zukunft von mir aus ruhig so bleiben.
Ich habe für die meisten Dinge, die so anfallen vom Erstellen der Artikeldaten
bis zum Paketversand an den Kunden schon gute Lösungen parat.
Das muss also nicht alles von der Shop-Software erledigt werden.
Im Grunde muss diese PHP-Geschichte nur den Warenkob befüllen
und dann am Ende die Bestellung an mich per E-Mail senden können.
Gruß
Ingo