Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/257.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 浏览器关闭时保存会话数据_Php_Session_Session State - Fatal编程技术网

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

Php 浏览器关闭时保存会话数据,php,session,session-state,Php,Session,Session State,我想知道保存购物车的最好方法是什么。我希望购物车详细信息(是会话变量)即使在用户关闭浏览器时也能保持不变。我会考虑在窗口关闭事件被触发时将数据保存在表中,但我不确定JQuery卸载或预卸载事件是否是我需要的,因为它们似乎不适用于不同的浏览器。 如果有任何指针能将我设置在正确的路径上,我将不胜感激因为会话数据是服务器端的,浏览器只有一个会话ID,所以您所需要做的就是使会话ID持续更长时间 这是通过编辑php.ini设置来完成的,特别是关于会话cookie生存期的设置。如果是0,则浏览器关闭时会清除

我想知道保存购物车的最好方法是什么。我希望购物车详细信息(是会话变量)即使在用户关闭浏览器时也能保持不变。我会考虑在窗口关闭事件被触发时将数据保存在表中,但我不确定JQuery卸载或预卸载事件是否是我需要的,因为它们似乎不适用于不同的浏览器。
如果有任何指针能将我设置在正确的路径上,我将不胜感激

因为会话数据是服务器端的,浏览器只有一个会话ID,所以您所需要做的就是使会话ID持续更长时间

这是通过编辑
php.ini
设置来完成的,特别是关于会话cookie生存期的设置。如果是
0
,则浏览器关闭时会清除cookie


尝试将其设置为高数值。这将使会话保持不变。

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

这是通过编辑
php.ini
设置来完成的,特别是关于会话cookie生存期的设置。如果是
0
,则浏览器关闭时会清除cookie


尝试将其设置为高数值。这将使会话保持不变。

可能在数据更改时保存数据,而不是在浏览器关闭时保存数据。可以保存在数据库、本地存储或cookie中

可能在数据更改时保存数据,而不是在浏览器关闭时保存数据。可以保存在数据库、本地存储或cookie中

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

为什么不保留您的购物车数据呢。如果他们在网站上时你想要它,而他们离开后你仍然需要它,那么就坚持下去。当一个会话被放弃时,要可靠地拾取它是很困难的,因为它们可能会关闭机器或终止浏览器进程。对购物车的每次更改都应该保存,直到他们明确终止购物车或与其相关联的cookie。

与其说是浏览器关闭,不如说是将会话cookie保留在浏览器中。如果我理解正确,您使用的是会话(即$\u SESSION变量),因此应该相对容易。PHP的功能很可能是未来的发展方向;还有一个选项
session.cookie\u lifetime
(已找到)可以更详细地解释会话的cookie生存期,即使您自己无法设置它


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

与其说是浏览器关闭,不如说是将会话cookie保留在浏览器中。如果我理解正确,您使用的是会话(即$\u SESSION变量),因此应该相对容易。PHP的功能很可能是未来的发展方向;还有一个选项
session.cookie\u lifetime
(已找到)可以更详细地解释会话的cookie生存期,即使您自己无法设置它


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

您只需在数据更改后立即保存数据即可。为什么要等?一旦有人将项目添加到购物车中,请将其保存。

您只需在数据更改后立即保存数据即可。为什么要等?一旦有人将物品添加到购物车中,就保存它。

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


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

jQuery卸载方法在任何地方都有效。当谈到表时,我假设您希望将购物车存储在DB中。因此,您必须对服务器进行同步ajax调用,以便PHP能够存储它并可能返回一个标识符,您应该将其放入cookie中


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

为什么要处理这么复杂的问题?为什么不在用户单击“添加到购物车”后立即保存它?因为用户可以在浏览其购物车时进行更改?好的,然后在用户进行更改时保存更改。再说一遍,为什么要担心浏览器关闭事件呢?好吧,两种方法都可以。我看不出有什么大的复杂性。保存函数可以像使用jQuery的15行Javascript一样?您只需保存一次,服务器负载就会大大降低。此外,我还回答了这个问题“当浏览器关闭时”,正如标题所说,当用户单击更改购物车的内容时,您已经向服务器发送了一个这样做的请求。如果等到以后才真正将更改写入数据库,则会导致不必要的错误。我不认为以后使用单独的jQuery请求是如何等效的。看起来更糟。为什么要处理这些复杂的事情呢?为什么不在用户单击“添加到购物车”后立即保存它?因为用户可以在浏览其购物车时进行更改?好的,然后在用户进行更改时保存更改。再说一次,为什么要担心浏览器关闭事件呢?好吧,两种方式都是c