Обработка сеансов для веб-сайта электронной коммерции - PullRequest
0 голосов
/ 08 мая 2011

Я работаю над сайтом электронной коммерции на PHP и хотел бы реализовать следующую функцию: если пользователь не вошел в систему, он может добавить товары в корзину и сохранить их после входа в систему. Кроме того, эта функция должна работать наоборот: пользователь входит в систему, а затем добавляет товары в корзину.

Я подумал, что хороший способ сделать это - использовать идентификатор сессии, но после некоторого теста выяснилось, что это не лучший способ сделать это.

Есть идеи?

Ответы [ 3 ]

4 голосов
/ 08 мая 2011

Почему использование сессии не лучший способ сделать это? Я бы сказал, что это так.

У вас может быть отдельная, основанная на сеансе структура "не вошедшей в систему" корзины покупок, точная копия обычной корзины. Если пользователь не вошел в систему, продукты хранятся там.

Когда пользователь входит в систему, вы объединяете содержимое незарегистрированной корзины с любыми элементами, которые пользователь уже может иметь в своей пользовательской корзине.

Этот момент также является местом для разрешения любых конфликтов, которые могут возникнуть в результате выбора продукта (например, выбранный продукт уже присутствует в корзине пользователя, вошедшего в систему).

Использование файлов cookie в соответствии с рекомендациями @Codemwnci для хранения продуктов или идентификатора корзины также является хорошей идеей, поскольку позволяет пользователю вернуться позже и по-прежнему иметь содержимое своей корзины, которое вы, возможно, захотите.

Тот же принцип объединения будет применяться и здесь, с дополнительной проверкой, действительно ли продукты в куки являются действительными (они могли быть удалены, так как пользователь сделал свой выбор, или пользователь мог изменить куки) ,

1 голос
/ 08 мая 2011

Вы можете использовать куки. Просто сохраните уникальный идентификатор в куки, который представляет корзину покупок. Независимо от того, вошел ли пользователь в систему или нет, идентификатор Cookie будет оставаться неизменным, поэтому данные будут сохранены.

0 голосов
/ 08 мая 2011
session_start();
$_SESSION["cartitems"] = "1,2,3";
...