本机 PHP 会话值在 Codeigniter 中丢失

Native PHP Session values are lost in Codeigniter

我正在开发一个使用原生 PHP sessions 的项目。我将用户重定向到 Codeigniter 页面,所有会话值都丢失​​了。 我尝试使用 Nativesession 库,它帮助我保留所有本机 php session 数据,如果我在 Codeigniter 的 index.php 中使用 session_start() 也是如此但我收到通知消息说“一个会话处于活动状态,此时您不能更改会话模块的 ini 设置”和“一个会话已经开始 - 忽略 session_start()"

你必须像这样开始会话

将其添加到您的控制器构造函数中

$this->load->library('session')

你可以像这样使用会话

$this->session

添加数据

$this->session->set_userdata('some_key', 'some_value');

获取数据

$some_value = $this->session->userdata('some_key');

阅读文档

Codeigniter Session Management

阅读了会话库在 codeigniter 中的工作原理后,找到了问题的根本原因。

根据文档,

"加载页面时,会话 class 将检查用户浏览器是否发送了有效的会话 cookie。如果会话 cookie 不存在(或者它是否存在)与服务器上存储的不匹配或已过期)将创建并保存一个新会话。"

就我而言,当我使用 PHP 本机会话 时,它不会为 CI 创建有效的 cookie,并且根据上述声明,CI 将创建新会话 因此旧会话将被销毁。

有两种方法可以解决这个问题

  1. 使用@$this->load->library('session')
  2. 抑制CI会话库生成的警告和通知
  3. 根本不要加载 CI 会话库 并继续使用本机 PHP 会话。

希望对遇到同样问题的人有所帮助。