0

我想知道保存购物车的最佳方法是什么。即使用户关闭浏览器,我也希望购物车详细信息(它们是会话变量)保持不变。我会考虑在触发窗口关闭事件后立即将数据保存在表中,但我不确定 jquery unLoad 或 beforeUnload 事件是否是我需要的,因为它们似乎不适用于不同的浏览器。

我很感激任何让我走上正确道路的指示

4

6 回答 6

4

当浏览器关闭时,与其在浏览器中保留会话 cookie 不如说是。如果我理解正确,您正在使用会话(即 $_SESSION 变量),所以它应该相对容易。PHP 的函数session_set_cookie_params很可能是要走的路;还有一个选项session.cookie_lifetime(在此处找到)可以进一步解释会话的 cookie 生命周期,即使您自己无法设置。

会话 cookie 的生命周期以秒为单位;因此,如果您将其设置为 60 秒并访问该站点,则会话 cookie 将仅持续 60 秒,然后丢弃 cookie,从而有效地破坏了会话。将生命周期设置为较高的数字以防止这种情况发生。

于 2012-06-10T22:59:34.073 回答
1

由于会话数据是服务器端的,并且浏览器只有一个会话 ID,因此您需要做的就是使会话 ID 持续更长时间。

这是通过编辑php.ini设置来完成的,尤其是那些与会话 cookie 的生命周期有关的设置。如果是0,则在浏览器关闭时清除 cookie。

尝试将其设置为较高的数字。这将使会话持续存在。

于 2012-06-10T22:56:10.433 回答
1

也许在数据发生变化时保存数据,而不是在浏览器关闭时保存。可以保存在数据库、本地存储或 Cookie 中。

于 2012-06-10T22:56:21.783 回答
0

为什么不只是保留您的购物车数据呢。如果您在他们在网站上时需要它,而当他们离开时您仍然需要它,请坚持下去。当会话被放弃时可靠地恢复是很棘手的,因为它们可能会关闭机器或终止浏览器进程。应该保存对购物车的每一次更改,直到他们明确终止他们的购物车或与之关联的 cookie。

于 2012-06-10T22:58:16.307 回答
0

您只需在数据更改后立即保存数据。为什么要等?有人将商品添加到购物车后,请立即保存。

于 2012-06-10T23:02:31.983 回答
0

jQuery unLoad 方法适用于任何地方。当您谈论表时,我假设您想将购物车存储在数据库中。因此,您必须对服务器进行同步 ajax 调用,以便 PHP 可以存储它并可能返回一个标识符,您应该将其放入 cookie 中。

问题是这个过程可能需要相对较长的时间(1-2s)。我只是提供一个保存按钮。

于 2012-06-10T23:02:33.200 回答