两个 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 安装访问会话
PHP Codeigniter 多语言站点使用会话变量来存储语言密钥