Набросал пару пунктов того, как на мой взгляд, должна быть реализована корзина покупок. Решил записать на всякий случай.
- Корзина хранится в БД
- Если пользователь известен (залогинен), то id корзины записывается ему в профиль
- Если пользователь неизвестен (гость), id корзины сохраняется в долгоживущую cookie
Надо предусмотреть действие на случай, если гость накидал товаров в корзину, а потом авторизовался и у него оказалась еще одна, непустая, сохраненная корзина.
Нужно предусмотреть механизм удаления старых корзин.
Почему бы просто не хранить все это добро в сессии? Спросите у маркетолога, какие идеи у него появляются при словах «брошенная корзина». :)
Кстати, бегло просмотрел несколько бесплатных скриптов — такого функционала не увидел. Максимум хранят корзину у известного пользователя, а корзину гостя в сессии.