CodeIgniter数据库会话问题:sess_expire_on_close

时间:2012-06-21 05:41:33

标签: codeigniter codeigniter-2

当存储在数据库中时,我遇到了CI会话的一个非常奇怪的问题。我正在使用会话来存储有关用户是否在我的网站上登录的信息。出于某种原因,我的一个来自立陶宛的朋友(我提到这个国家以防万一)它无法登录。当我监控会话表时,似乎她正在为她去的每个页面创建一个新的会话。她尝试使用各种浏览器,但无论浏览器如何都会出现同样的问题。没有其他人有这个问题(所有其他测试人员都在立陶宛之外)。

这是奇怪的事情:我能够通过设置sess_expire_on_close = TRUE来解决她的问题。我猜这不可能是修复,但每当我将其设置为FALSE时,问题就会出现。

我的另一个问题是我偶尔会丢失会话数据,这意味着用户会被注销。不知道是什么原因引起的。我将发布一个不同的SO问题,但认为在这里提一下它可能是有用的。

3 个答案:

答案 0 :(得分:1)

您使用的是哪个版本的CodeIgniter? 发布时的CI 2.1.1有一个session bug,其中会话没有从数据库中删除,还有其他问题。 如果您使用的是2.1.1(唯一受此问题影响的版本),我建议您升级到2.1.2并重试。

答案 1 :(得分:0)

您的ci会话配置是否设置为匹配IP地址?如果是这样,你的朋友可能会使用3G移动连接,并且可能在浏览时不断更改她的IP地址......只是一个猜测。

答案 2 :(得分:0)

我记得几年前英国一家互联网提供商也存在类似的问题。如果不是每个请求,他们的IP几乎都会改变。我认为会议与知识产权有关。因此,每当她访问另一个页面时,她都会被分配到新的会话中。

每次访问您的信息页时都会检查她的IP。