购物车持久性:$_SESSION还是浏览器 cookie?
在没有用户名/登录名的电子商务网站上,使用PHP $_SESSION变量或浏览器cookie将商品保留在购物车中会更好吗?我倾向于_SESSION美元,因为饼干可以被禁用,但想听听你的想法。
提前感谢您的考虑。
在没有用户名/登录名的电子商务网站上,使用PHP $_SESSION变量或浏览器cookie将商品保留在购物车中会更好吗?我倾向于_SESSION美元,因为饼干可以被禁用,但想听听你的想法。
提前感谢您的考虑。
没有大型网站敢于将用户的购物车存储在会话或cookie中 - 这些数据只是有价值的。
客户正在购买什么,何时选择商品,购买多少商品,为什么没有完成结帐等。对您的业务都非常非常重要。
使用数据库表来存储此信息,然后将其链接到用户的会话。这样,您就不会丢失信息,并且可以返回并根据用户购物车构建统计信息或解决结帐过程中的问题。
记录所有可能的内容。
下面是一个简化的示例,说明这在数据库级别可能如何看。
user {
id
email
}
product {
id
name
price
}
cart {
id
product_id
user_id
quantity
timestamp (when was it created?)
expired (is this cart still active?)
}
您可能还希望将购物车表拆分为更多表,以便跟踪购物车的修订。
普通 PHP 会话由两部分组成
因此,它不是 vs - 它是 + = “会话”。但是,您可以通过使用包含数据的单个加密cookie来修改此设置(因此您不需要标识符来查找数据)。另一种常见的方法是将数据存储在 memcached 或数据库中,而不是文件系统中,以便多个服务器可以访问它。$_SESSION
$_COOKIE
$_SESSION
$_COOKIE
@Travesty3说的是,您可以拥有两个cookie - 一个用于会话,另一个是“保持登录”Cookie(比会话cookie存在的时间更长),或者是单独cookie中的数据副本。
正如Xeoncross所指出的那样,存储任何可能的信息以进行分析非常重要。因此,人们不应该完全依赖会话和cookie。
一种可能的方法是-
如果未登录,请使用会话
如果用户未登录,您可以使用PHP存储和检索会话中的购物车项目和愿望清单项目$_SESSION
登录时使用数据库
如果用户已登录,则可以考虑以下两个选项之一 -
当用户登录时
当用户登录时,从会话中获取所有购物车项目和愿望清单项目并将其存储在数据库中。
这将使数据持久化,即使用户注销或更改计算机,但在用户未登录之前,无法永久存储信息,因此它不会持久保存。
获取所需数据
每当您尝试访问购物车或愿望清单时,请进行以下检查 -