【发布时间】:2011-05-08 09:39:55
【问题描述】:
我正在使用 PHP 开发一个电子商务网站,我想实现以下功能:如果用户未登录,他可以将产品添加到购物车中,并且在登录后仍然拥有这些产品。此外,该功能必须以相反的方式工作:用户登录,然后将产品添加到购物车。
我认为使用会话 ID 是一种好方法,但经过一些测试后发现这不是最好的方法。
有什么想法吗?
【问题讨论】:
标签: php shopping-cart
我正在使用 PHP 开发一个电子商务网站,我想实现以下功能:如果用户未登录,他可以将产品添加到购物车中,并且在登录后仍然拥有这些产品。此外,该功能必须以相反的方式工作:用户登录,然后将产品添加到购物车。
我认为使用会话 ID 是一种好方法,但经过一些测试后发现这不是最好的方法。
有什么想法吗?
【问题讨论】:
标签: php shopping-cart
为什么使用会话不是最好的方法?我会说是。
您可以拥有一个单独的、基于会话的“未登录”购物车结构,即普通购物车的精确副本。如果用户未登录,产品将存储在那里。
当用户登录时,您将未登录购物车的内容与用户可能已经在其用户特定购物车中的任何物品合并。
该点也是处理产品选择可能引起的任何冲突的地方(例如,已登录用户的购物车中已存在所选产品)。
使用@Codemwnci 推荐的 cookie 来存储产品或购物车 ID 也是一个好主意,因为它允许用户稍后返回并且仍然拥有您可能想要的购物车内容。
此处也适用相同的合并原则,并额外检查 cookie 中的产品是否真的有效(它们可能在用户做出选择后被删除,或者用户可能更改了 cookie) .
【讨论】:
session_destroy()吗?
session_destroy()。同时销毁 cookie,如此处的示例所示:php.net/manual/en/function.session-destroy.php
您可以使用 cookie。只需在 cookie 中存储一个唯一标识符,它代表购物篮。无论用户是否登录或退出,Cookie标识符仍然是相同的,因此数据将被持久化。
【讨论】:
session_start();
$_SESSION["cartitems"] = "1,2,3";
【讨论】: