使用会话和cookie来存储持久数据

时间:2014-06-14 10:46:47

标签: php session cookies session-cookies

我即将解决购物车的问题' PHP中的各种各样,但由于我还是新手,我想从更了解的人那里找到最好的方法。

如果用户没有登录或结帐,我希望添加到购物篮中的商品可以使用几天。我一直在使用zavvi.com作为示例,因此我可以尝试复制他们是如何做到的。

我知道会话数据仅在浏览器打开时可用,并在浏览器关闭时从服务器的内存中删除。我也理解,cookie会保存到客户端,以获得更具持久性的数据,并具有已定义的到期时间。

然而,以Zavvi为例,我无法理解cookie是如何做到的。有一个名为' ElysiumBasketzavvi_V6'可能存储篮子的内容。但是cookie的内容(例如MjI1MzM3NjI4)看起来像某种加密?

如果有人可以就事件顺序,何时使用会话ID以及如何存储和检索购物篮内容等方面向我提出几点意见,我将非常感激,以便它像Zavvi一样工作,我和#39 ; m假设应该如何做。

1 个答案:

答案 0 :(得分:0)

你有一些不正确的假设。

  

我知道会话数据仅在浏览器打开时可用,   并在浏览器关闭时从服务器的内存中删除

错误。您可以将会话处理程序配置为使用文件,数据库或实现您自己的驱动程序。

Cookie只能通过设计来处理少量数据。除标识符,标志或小数据块和喜欢之外的应用程序数据不应存储在其中。

为了能够随时返回会话,您需要正确配置服务器端和客户端。最好的方法是使用DB进行会话存储以保持持久性,确保会话GC配置为不收集非活动会话并在会话cookie上设置足够长的到期时间。

但是,由于您希望用户能够返回购物篮,因此不一定必须通过长会话超时来实现。相反,您可以将用户篮子的内容保存在数据库中,因此当他们下次登录时,篮子内容仍然存在。