Php CodeIgniter正在数据库中生成多个会话。为什么?

Php CodeIgniter正在数据库中生成多个会话。为什么?,php,browser,codeigniter,session,Php,Browser,Codeigniter,Session,我有一个在页面加载时进行一些ajax调用的站点。由于某些原因,CodeIgnitor在加载页面时插入了4个会话(我假设每个ajax调用一个会话)。我正在数据库中存储会话 我很确定每个浏览器应该只有一个会话。Firefox似乎只生成一个;其他浏览器似乎创建了一大堆会话。同一用户的多个会话给我带来了一些严重的身份验证问题 为什么会这样?如何停止它?检查config.php文件,确保正确填写cookie选项。如果不是,它将无法跟踪用户,并在每次页面加载时生成新会话。检查客户端操作系统和服务器上的日期/

我有一个在页面加载时进行一些ajax调用的站点。由于某些原因,CodeIgnitor在加载页面时插入了4个会话(我假设每个ajax调用一个会话)。我正在数据库中存储会话

我很确定每个浏览器应该只有一个会话。Firefox似乎只生成一个;其他浏览器似乎创建了一大堆会话。同一用户的多个会话给我带来了一些严重的身份验证问题


为什么会这样?如何停止它?

检查config.php文件,确保正确填写cookie选项。如果不是,它将无法跟踪用户,并在每次页面加载时生成新会话。

检查客户端操作系统和服务器上的日期/时间

我知道这太晚了,但也许有人在寻找答案时发现了这一页

我认为这是因为CI在包含会话id的cookie上设置了过期时间,如果服务器和客户端之间的时差大于过期时间,cookie就会变旧,服务器会在每次请求时为客户端生成新会话。从来没有花时间去弄清楚确切的机制,但发生在我身上好几次,而且这种修复方法总是有效的


检查客户端操作系统和服务器上的日期/时间


我遇到了同样的情况,并确认解决方案是修复的,我发现这个主题有同样的问题:在每个页面上CI都生成新会话。可能的解决方案:从站点名称(不是“my_test_site.com”,而是“my test site.com”)中删除带下划线的。至少,这对我的处境有所帮助。

我知道讨论是在不久前进行的,但有人可能会觉得这很有用

到目前为止,我已经使用了CI会话,而没有将其数据存储在数据库中。今天我决定尝试一下,并立即遇到同样的问题:CI在每次加载页面时都会生成新会话

我检查了我的服务器时间、时区、我的cookie等等——所有我能在论坛上找到的提示——都没有结果。然后决定自己调试CI会话类

长话短说,我的会话表中的user\u agent字段太小了-VARCHAR 50-这会剪切原始的user\u agent字符串-因此CI找不到我的会话并生成另一个会话。我刚刚将user_agent字段大小增加到200,一切都像一个符咒

我忘了提到我使用Mac OS X Lion

再一次,希望这能帮助一些人

$config['cookie_domain'] = "example.com";

在这段代码中使用您的域名。

因为有amny用户正在浏览该网站否-这四个网站的IP地址都相同。您能列出您遇到的实际问题吗?我以前见过这种情况,但通常由于注销并访问该站点,它会生成一个空白的通用会话。同时更新您的问题并包括您的配置cookie参数。我从本页找到了一个对我有用的答案:也复制到这里:>如果您使用的是CI 3.x,并且刚刚将服务器php版本>升级到php 7.x>>请转到system/libraries/Session/Session.php第281行,并替换>ini_set('Session.name',$params)['cookie_name'];by>ini_set('session.id',$params['cookie_name'];$config['sess_cookie_name']='ci_session';$config['sess_expiration']=3600;$config['sess_encrypt_cookie']=FALSE;$config['sess_use_use_数据库']=TRUE;$config['sess_表名']='ci sess_sess_sess_sess_sessions']=TRUE;$config['sess_sess_-ip']['sess_time_to_update']=300;多个会话仅在safari、IE8中出现,尚未使用chrome进行检查。FF生成单个会话条目。仅代码回答。此外,这是指向色情网站的链接。作为更新,用户代理字段已从CI 3.x中删除