浏览器关闭后,使用$ _SESSION存储购物车信息将会丢失

时间:2012-09-05 10:18:43

标签: php session cookies

我在这里阅读了许多问题/解决方案后,我无法真正解决这个问题。基本上我正在写一个小型购物车应用程序。我找到了一种方法来存储用户添加到购物车中的项目,最后我使用$ _SESSION。

问题是所有保存的购物车数据在关闭浏览器后都会丢失。我不能依赖$ _COOKIE,因为我需要将每个“添加”存储到购物车中作为一个新的数组,我找不到用cookie做的方法(加上它有限制或其他),我真的对现在该怎么办感到困惑。

我甚至为客人保存购物车数据,使用数据库对我来说不是一个选择。有什么建议吗?

5 个答案:

答案 0 :(得分:3)

为什么不将购物车存放在数据库中。在用户cookie中保存唯一ID(或者如果您有身份验证/登录系统,只需使用用户ID)。将其存储在数据库中还可以使您能够查看不完整的订单,这可能对统计数据和重新定位营销等有用。

答案 1 :(得分:2)

我认为关闭浏览器时,购物车商品的标准做法会丢失。

您可以尝试使用HTML5本地存储: -

Local storage tutorial

答案 2 :(得分:1)

您的会话Cookie需要set a lifetime,默认情况下,该Cookie仅会在浏览器关闭之前生效。

答案 3 :(得分:1)

正如您所提到的,当浏览器关闭时,会话不会保留。

如果数据库或任何类型的服务器端存储不是一个选项。您可以考虑使用LocalStorage将其保存在客户端。即使浏览器关闭,本地存储中的数据仍然存在浏览器将域名与您的数据相关联。

使用本地存储时需要注意几点。

首先,本地存储位于客户端,因此您可能需要将数据传回服务器,以便PHP可以对其进行操作。 (假设您仍需要服务器端来处理购物车数据。)请参阅此stackoverflow帖子:PHP & localStorage;

其次,用户可以不受任何限制地更改本地存储。

第三,在IE8之前IE不支持它。如果你担心IE6 / 7,你可能需要回退到cookie方法。

答案 4 :(得分:0)

浏览器关闭时会清除会话,因此您必须使用Cookie。

查看这篇文章,了解如何在Cookie中存储数组:update cookie value in php

Troelskn的方法是我会使用的方法,但是在数据库中存储购物车ID似乎是明智的做法:)。