首页 > 解决方案 > Codeigniter 会话的奇怪行为

问题描述

我正在开发一个基于 CodeIgniter 的应用程序。此应用程序使用自定义控制器扩展其控制器,该控制器CP_Controller位于application/core. 它看起来像这样:

class CP_Controller extends CI_Controller {

    var $settings;
    var $body_classes = array();
    var $data = array('theme' => 'cmodule');

    public function __construct() {
        parent::__construct(); 
        // print_r($_SESSION);
    }

    ...
}

问题是,print_r($_SESSION);。如果我取消注释,它会打印[__ci_last_regenerate] => 1589186369. 没关系。没有自定义会话数据。

但仅对于特定请求,这将返回一个充满会话内容的整个数组。即使这是我在全新的浏览器会话或私有模式下运行的唯一请求。

在这种情况下,奇怪的是业务逻辑尚未执行,并且在此之前没有设置任何会话。那么怎么可能在这一点上,在一个空白的浏览器会话中,我正在获取会话数据。我无法弄清楚此会话数据的来源,它在哪里设置到会话中?它只调用parent::__construct();before print_r

Codeigniter 应用程序真的有什么方法可以挂接到会话并在初始系统引导级别(仅针对该特定请求)填充会话吗?或者还有其他方法吗?

谢谢。

标签: phpcodeignitersession

解决方案


推荐阅读