我有一个使用codeigniter 3.0的旧网站,它工作正常2年,直至今天
我无法登录,所以我做了一些调查,发现会话没有用...基本上每次重定向后都会变为null
所以我写了一些代码来了解最新情况
class Test extends CI_Controller {
function a(){
$this->session->set_userdata(array('test'=>123 ));
echo 'stored@';
$md_id = $this->session->userdata();
var_dump($md_id);
}
function b(){
$md_id = $this->session->userdata();
var_dump($md_id);
}
这是/ a
的结果stored@array(2) { ["__ci_last_regenerate"]=> int(1516110913) ["test"]=> int(123) }
和/ b
的结果array(1) { ["__ci_last_regenerate"]=> int(1516110943) }
这是我的配置
$config['sess_driver'] = 'database';
$config['sess_cookie_name'] = 'rozsess';
$config['sess_expiration'] = 0;
$config['sess_save_path'] = 'ci_sessions';
$config['sess_match_ip'] = FALSE;
$config['sess_time_to_update'] = 86400;
$config['sess_regenerate_destroy'] = FALSE;
$config['cookie_prefix'] = '';
$config['cookie_domain'] = '';
$config['cookie_path'] = '/';
$config['cookie_secure'] = FALSE;
$config['cookie_httponly'] = FALSE;
我在我的数据库中看到了会话在那里,但当我查看我的cookie时,test
会话的哈希码并不只有重新生成会话的哈希码
我试图在配置中设置域名并使用exp结果播放
我不知道发生了什么似乎CI一直在删除我的旧cookie或任何人都知道发生了什么?
-------------------------更新--------------------- ---------------
所以我已经清空了我的会话表并试图登录...所以它登录并自动注销并重定向到登录页面......那就是3请求
1 - 已登录 2 - 重定向到仪表板(这里它被注销) 3 - 重定向到登录页面
这是我的数据库显示的内容
你可以看到第一行中有md_id
,第一行有会话数据......但是之后还有另外两行
我的cookie管理器指向最后一行哈希码
基本上问题是CI为每个请求重新生成一个cookie!这就是为什么它无法找到我的会话....它会删除我的会话cookie并在下一个请求中将其替换为另一个...并且如果我刷新任何页面10次我在db中获得10行< / p>