0

我想让会话保持浏览器关闭所以我用

session_set_cookie_params(86400 * 60, '/', 'my.domain.com', true, true);

向客户端发送一个持久 cookie(也带有安全标志,因为这是一个 SSL 站点),有效期为 2 个月。但是,我看到在 x 分钟不活动后,会话变量在服务器上被清除。我怎样才能避免这种情况?本质上,我希望存储会话变量,直到 cookie 变得无效

谢谢

4

3 回答 3

1

设置session.gc_maxlifetime 配置属性

当涉及到可接受的值时,文档相当稀疏,但我不想长达两个月。

您通常最好将重要数据存储在数据库中,并在使用记住我cookie 创建会话时将其添加到会话中。

为实际会话留下会话。

于 2013-02-07T16:29:51.693 回答
1

通过会话,您可以看到两件事。直到垃圾收集清理服务器上的会话的时间,以及直到 cookie 过期的时间。

您只更改了 cookie 过期时间,会话仍将被清理。然而,延长会话并不是解决这个问题的好方法。您的代码可能会更改,最终可能会导致用户会话中断。您可能需要使用某种共享会话存储,例如 memcached,无论如何都会在某个最大时间后删除存储。

所以解决这个问题的方法是生成一个唯一的一次性cookie,可以用作替代登录密钥。此密钥将允许用户以类似于用户名/密码的方式登录。使用后,会重新生成一个新的。

于 2013-02-07T16:30:41.633 回答
0

会话变量将保持如下注释,但除非您更改它们的默认行为,否则它们会在会话结束时(即浏览器关闭时)过期。

对于您要完成的工作,您应该将值存储在$_COOKIE变量中,而不是$_SESSION变量中。

见这篇文章:http ://buildinternet.com/2010/07/when-to-use-_session-vs-_cookie/

于 2013-02-07T16:24:06.930 回答