两个 CodeIgniter 应用程序会话相互覆盖

Posted

技术标签:

【中文标题】两个 CodeIgniter 应用程序会话相互覆盖【英文标题】:Two CodeIgniter App Session Overiding Eachother 【发布时间】:2021-06-12 08:11:52 【问题描述】:

所以我的服务器上有 2 个 ci 应用程序(不同的项目文件夹),当使用相同的浏览器访问时,会话会相互覆盖。

我只是注意到这一点,因为我认为默认情况下它会有所不同,即使会话变量名称相同。 当我将 set_userdata 和 sess_destroy 应用于这两个应用程序时,我在这里发现了一些问题。 我彼此使用几乎相同的变量

                            $data_session = array(
                            'EMP_ID' => $data['EMP_ID'],
                            'EMP_FULL_NAME' => $data['EMP_FULL_NAME'],
                            'EMP_F_NUM' => $data['EMP_F_NUM'],
                            'EMP_EMAIL' => $data['EMP_EMAIL'],
                            'LEAD_STATUS' => $data['LEAD_STATUS'],
                            'BRANCH_ID' => $row_br['BRANCH_ID'],
                            'BRANCH_NAME' => $row_br['BRANCH_NAME'],
                            'BRANCH_CODE' => $row_br['BRANCH_CODE'],
                            'DEPART_ID' => $row_dep['DEPART_ID'],
                            'DEPART_NAME' => $row_dep['DEPART_NAME'],
                            'STATUSLOGIN' => "LOGIN",
                            'CONTINUE' => 'NEW'
                            );
                            $this->session->set_userdata($data_session);

我如何使它彼此不同?在每个应用程序上设置用户数据时我需要创建不同的变量吗?

【问题讨论】:

【参考方案1】:

我的猜测是您可能正在使用旧项目的副本来创建新项目。为此,您还需要更改 application/config/config.php 文件中会话的配置变量。

所以你需要更新一个会话名称变量。

$config['sess_cookie_name'] = 'second_project_session';

【讨论】:

我使用我从codeigniter.com/download 获得的新 ci,默认情况下配置是这样的 $config['sess_driver'] = 'files'; $config['sess_cookie_name'] = 'ci_session'; $config['sess_expiration'] = 7200; $config['sess_save_path'] = NULL; $config['sess_match_ip'] = 假; $config['sess_time_to_update'] = 300; $config['sess_regenerate_destroy'] = 假;每次我做一个项目时都需要改变吗? 尝试将 $config['sess_cookie_name'] = 'ci_session'; 更改为 $config['sess_cookie_name'] = 'ci_session_project1'; 并进行测试。 如果您要破坏同一服务器上的两个 CI 项目,您的 sess_cookie_name 值需要不同,以便它们具有单独的会话

以上是关于两个 CodeIgniter 应用程序会话相互覆盖的主要内容,如果未能解决你的问题,请参考以下文章

Codeigniter 3 - 从外部 Codeigniter 安装访问会话

Codeigniter 重复会话问题

PHP Codeigniter 多语言站点使用会话变量来存储语言密钥

在 codeigniter 中集成正常的 php 会话

Codeigniter 3 会话不适用于 PHP 7.1.4

Codeigniter在nodejs中读取会话cookie