2010-07-21 68 views
2

我正在使用身份验证组件和会话组件来存储我的购物车的电子商务项目。即使浏览器处于活动状态,CakePHP会话也会过期

问题是即使我正在主动浏览网站,会话在一段时间后突然被清除。我知道这应该是因为会话超时,但只是增加超时值不是我正在寻找的解决方案。

我希望会话仅在用户关闭浏览器时过期。这可以实现吗?

+0

哦......即使我正在主动点击我的购物车,我的环节也已经清除。我的代码有什么问题吗? – 2010-07-22 21:08:55

+0

检查你的php.ini设置。 – Leo 2010-07-21 17:21:17

回答

1

AFAIK你所能做的就是在将来设置一个会话超时变量。浏览器关闭时会自动清除会话(除非您设置了记住我类型的cookie)。把它放在未来将有效地完成你需要做的事情。

进入会话需要多长时间?它应该只在用户闲置一段时间后超时。如果它在两次请求之间超时,并且您知道超时时间尚未过去,您还有其他问题正在进行。 core.php文件中有关安全级别和会话超时的设置是什么?

+0

嘿,谢谢你的回复。我已将Security.level设置为高,并将Session.timeout设置为120秒。根据您的建议,我可以将超时设置为更高的值,但在这种情况下,即使我可以关闭浏览器并稍后再返回,会话也会保持活动状态。无论如何,我想没有办法确定浏览器是否在客户端被关闭。 – 2010-07-22 09:52:41

+0

将安全级别设置为高,除了会话超时IIRC之外还有其他影响。它增加了referer检查当中等|高。当设置为高时,它将在*每个*请求之间重新生成会话ID。我建议你把它变成中等。然后,当你关闭浏览器(整个浏览器必须退出,而不仅仅是该选项卡...检查你的任务管理器,以确保它已经消失),它会关闭会话。是的,你不能确定浏览器是否关闭客户端。 – 2010-07-22 15:55:12

+0

好的,谢谢......我已将它更改为中等,至今为止工作状况良好! :) – 2010-08-04 23:10:50

相关问题