Auch nicht
Keine großen Websites würden es wagen, den Warenkorb eines Benutzers in einer Sitzung oder einem Cookie zu speichern - diese Daten sind einfach zu wertvoll.
Was Kunden kaufen, wenn sie Artikel auswählen, wie viele sie kaufen, warum sie den Bezahlvorgang nicht abschließen usw., sind alle sehr, sehr wichtig für Ihr Geschäft.
Verwenden Sie eine Datenbanktabelle, um diese Informationen zu speichern und verknüpfen Sie sie dann mit der Sitzung des Benutzers. Auf diese Weise verlieren Sie die Informationen nicht und können Statistiken über Benutzerkörbe erstellen oder Probleme mit Ihrem Bezahlvorgang lösen.
Protokollieren Sie alles, was Sie können.
Datenbankschema
Im Folgenden finden Sie ein vereinfachtes Beispiel dafür, wie dies auf Datenbankebene aussehen könnte.
benutzer {
id
email
}
produkt {
id
name
preis
}
warenkorb {
id
produkt_id
benutzer_id
menge
zeitstempel (wann wurde es erstellt?)
abgelaufen (ist dieser Warenkorb noch aktiv?)
}
Sie möchten den Warenkorb möglicherweise auch in mehrere Tabellen aufteilen, um Änderungen am Warenkorb nachzuverfolgen.
Sitzungen
Normale PHP-Sitzungen bestehen aus zwei Teilen
- Die Daten (gespeichert in einer Datei auf dem Server)
- Ein eindeutiger Bezeichner, der dem Benutzeragenten (Browser) zugeordnet ist
Es geht also nicht um $_SESSION
vs $_COOKIE
- es geht um $_SESSION
+ $_COOKIE
= "Sitzung". Es gibt jedoch Möglichkeiten, dies zu ändern, indem Sie ein einzelnes verschlüsseltes Cookie verwenden, das die Daten enthält (und daher nicht benötigen, um die Daten zu finden). Ein weiterer häufiger Ansatz besteht darin, die Daten in Memcached oder einer Datenbank anstelle des Dateisystems zu speichern, damit mehrere Server darauf zugreifen können.
Was @Travesty3 sagt, ist, dass Sie zwei Cookies haben können - eines für die Sitzung und ein anderes, das entweder ein "Angemeldet bleiben" Cookie (das länger als das Sitzungscookie existiert) ist oder eine Kopie der Daten in einem separaten Cookie.