在浏览器关闭时保存会话数据


saving session data when browser closes

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

我将不胜感激任何让我走上正确道路的指示

与其说浏览器

关闭,不如说是将会话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-2秒)。我只提供一个保存按钮。