我想知道保存购物车的最佳方法是什么。即使用户关闭浏览器,我也希望购物车详细信息(它们是会话变量)保持不变。我会考虑在触发窗口关闭事件后立即将数据保存在表中,但我不确定 jquery unLoad 或 beforeUnload 事件是否是我需要的,因为它们似乎不适用于不同的浏览器。
我很感激任何让我走上正确道路的指示
我想知道保存购物车的最佳方法是什么。即使用户关闭浏览器,我也希望购物车详细信息(它们是会话变量)保持不变。我会考虑在触发窗口关闭事件后立即将数据保存在表中,但我不确定 jquery unLoad 或 beforeUnload 事件是否是我需要的,因为它们似乎不适用于不同的浏览器。
我很感激任何让我走上正确道路的指示
当浏览器关闭时,与其在浏览器中保留会话 cookie 不如说是。如果我理解正确,您正在使用会话(即 $_SESSION 变量),所以它应该相对容易。PHP 的函数session_set_cookie_params很可能是要走的路;还有一个选项session.cookie_lifetime
(在此处找到)可以进一步解释会话的 cookie 生命周期,即使您自己无法设置。
会话 cookie 的生命周期以秒为单位;因此,如果您将其设置为 60 秒并访问该站点,则会话 cookie 将仅持续 60 秒,然后丢弃 cookie,从而有效地破坏了会话。将生命周期设置为较高的数字以防止这种情况发生。
由于会话数据是服务器端的,并且浏览器只有一个会话 ID,因此您需要做的就是使会话 ID 持续更长时间。
这是通过编辑php.ini
设置来完成的,尤其是那些与会话 cookie 的生命周期有关的设置。如果是0
,则在浏览器关闭时清除 cookie。
尝试将其设置为较高的数字。这将使会话持续存在。
也许在数据发生变化时保存数据,而不是在浏览器关闭时保存。可以保存在数据库、本地存储或 Cookie 中。
为什么不只是保留您的购物车数据呢。如果您在他们在网站上时需要它,而当他们离开时您仍然需要它,请坚持下去。当会话被放弃时可靠地恢复是很棘手的,因为它们可能会关闭机器或终止浏览器进程。应该保存对购物车的每一次更改,直到他们明确终止他们的购物车或与之关联的 cookie。
您只需在数据更改后立即保存数据。为什么要等?有人将商品添加到购物车后,请立即保存。
jQuery unLoad 方法适用于任何地方。当您谈论表时,我假设您想将购物车存储在数据库中。因此,您必须对服务器进行同步 ajax 调用,以便 PHP 可以存储它并可能返回一个标识符,您应该将其放入 cookie 中。
问题是这个过程可能需要相对较长的时间(1-2s)。我只是提供一个保存按钮。