我在这里阅读了许多问题/解决方案后,我无法真正解决这个问题。基本上我正在写一个小型购物车应用程序。我找到了一种方法来存储用户添加到购物车中的项目,最后我使用$ _SESSION。
问题是所有保存的购物车数据在关闭浏览器后都会丢失。我不能依赖$ _COOKIE,因为我需要将每个“添加”存储到购物车中作为一个新的数组,我找不到用cookie做的方法(加上它有限制或其他),我真的对现在该怎么办感到困惑。
我甚至为客人保存购物车数据,使用数据库对我来说不是一个选择。有什么建议吗?
答案 0 :(得分:3)
为什么不将购物车存放在数据库中。在用户cookie中保存唯一ID(或者如果您有身份验证/登录系统,只需使用用户ID)。将其存储在数据库中还可以使您能够查看不完整的订单,这可能对统计数据和重新定位营销等有用。
答案 1 :(得分:2)
答案 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似乎是明智的做法:)。