You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CodeIgniter 3.0会话失效:每次请求自动重生成会话Cookie

解决CodeIgniter 3.x数据库会话持续重生成、登录后自动登出问题

从你的测试结果和描述来看,核心问题是每次请求都会生成新的会话记录,浏览器Cookie无法关联到原有会话ID,导致会话数据丢失、登录后自动跳回登录页。结合CI3的会话机制,我整理了几个针对性的排查和修复步骤:

1. 先确认会话表结构是否正确

CI3的数据库会话表有严格的结构要求,如果表字段类型不对,会导致会话ID无法匹配,进而触发每次请求新建会话。请对比你的ci_sessions表,确保结构和下面的SQL一致:

CREATE TABLE IF NOT EXISTS `ci_sessions` (
        `id` varchar(128) NOT NULL,
        `ip_address` varchar(45) NOT NULL,
        `timestamp` int(10) unsigned DEFAULT 0 NOT NULL,
        `data` blob NOT NULL,
        KEY `ci_sessions_timestamp` (`timestamp`)
);

重点注意:

  • id字段必须是varchar(128)(CI3的会话ID是长哈希值,旧版本的短字段会截断ID)
  • data字段是blob类型,用于存储序列化的会话数据

如果结构不符,建议备份现有数据后重新创建表。

2. 修正Cookie域名配置(最常见的问题)

你的Cookie域名设为空,这在部分环境下会导致浏览器认为当前域名无法共享Cookie,每次请求都不携带旧Cookie,CI只能生成新会话。

  • 线上生产环境:如果你的域名是xxx.com,请设置:
    $config['cookie_domain'] = '.xxx.com'; // 注意前面的点,支持www和非www子域名共享
    
  • 本地测试环境:根据你访问的地址设置:
    • 用localhost访问:$config['cookie_domain'] = 'localhost';
    • 用IP(如127.0.0.1)访问:$config['cookie_domain'] = '127.0.0.1';

3. 检查反向代理IP配置(如果网站用了代理/CDN)

如果你的网站部署在Nginx反向代理、CloudFlare等CDN后面,CI可能会错误获取代理服务器的IP而非用户真实IP,即使你设置了$config['sess_match_ip'] = FALSE,也可能触发会话重生成。

在config.php中添加你的代理IP段:

$config['proxy_ips'] = '192.168.0.0/16, 10.0.0.0/8'; // 替换成你的代理服务器IP

4. 验证PHP全局会话配置是否冲突

CI的会话配置可能被PHP.ini的全局设置覆盖,创建一个phpinfo.php文件(内容<?php phpinfo(); ?>),访问后查看session模块的以下配置:

  • session.cookie_domain:必须和CI的$config['cookie_domain']一致
  • session.cookie_secure:如果你的网站用HTTPS,需要设为TRUE,否则设为FALSE,和CI的$config['cookie_secure']保持一致
  • session.gc_maxlifetime:值不能小于CI的$config['sess_time_to_update'](你设的是86400,所以这个值至少要86400)

5. 排查自定义代码或钩子的干扰

检查是否有自定义代码强制销毁/重生成会话:

  • 查看config/hooks.php,确认没有在pre_system、post_controller等钩子中调用$this->session->sess_destroy()或$this->session->sess_regenerate()
  • 检查是否修改过CI核心的Session.php文件,或者自定义了会话库

最后测试

按照上面的步骤调整后,重新测试你的Test控制器:

  1. 访问/a,查看浏览器Cookie是否生成了rozsess记录
  2. 访问/b,查看是否能读取到test字段
  3. 登录后观察数据库会话表,是否不再每次请求都生成新记录

内容的提问来源于stack exchange,提问作者hretic

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 08:23:48