CodeIgniter 3 会话在页面刷新后销毁
Posted
技术标签:
【中文标题】CodeIgniter 3 会话在页面刷新后销毁【英文标题】:CodeIgniter 3 sessions destroy after page refresh 【发布时间】:2017-11-19 23:35:57 【问题描述】:尽管这里有无数类似的问题,但没有一个对我有用。所以,我决定在这里发布。
问题是页面刷新/重定向后会话被破坏。
我在 Windows 10 上使用 XAMPP 服务器(带有 php 7.x 的最新版本),我认为这是 codeigniter 设置的问题,但是我只是测试了传统的会话代码(没有 Codeigniter)并且工作正常。
传统 PHP 代码(工作正常)
session_start();
if(!isset($_SESSION['admin']))
$_SESSION['admin']='test';
die('session not set, set it now');
else
echo $_SESSION['admin'];
Codeigniter 代码(这就是问题所在)
if($this->session->userdata('admin'))
echo $this->session->userdata('admin');
else
$this->session->set_userdata('admin', 'test');
echo 'session not set, set it now';
Codeigniter 会话配置
$config['sess_driver'] = 'files';
$config['sess_cookie_name'] = 'ci_session';
$config['sess_expiration'] = 7200;
$config['sess_save_path'] = 'C:\\xampp\\htdocs\\application\\cache\\session\\';
$config['sess_match_ip'] = FALSE;
$config['sess_time_to_update'] = 300;
$config['sess_regenerate_destroy'] = FALSE;
注意相同的 Codeigniter 代码在 WAMP 服务器 - Windows 10 上运行良好
【问题讨论】:
只是一个提示,而不是像$config['sess_save_path'] = 'C:\\xampp\\htdocs\\application\\cache\\session\\';
那样写APPPATH
像$config['sess_save_path'] = APPPATH . 'cache/session/';
一样使用$config['sess_save_path'] = APPPATH . 'cache/session/';
我尊重你的建议,虽然,我已经手动检查了目录 `C:\\xampp\\htdocs\\application\\cache\\session\\` 并在那里找到了会话文件,这意味着,它工作正常。
那么print_r($this->session->userdata);
你什么时候得到什么?
仅限Array ( [__ci_last_regenerate] => 1497678913 )
$_SESSION
这也返回相同?
【参考方案1】:
您的代码看起来正确。我想您可以看看Native-session。这可能会解决您的问题。
还要检查config.php
是否有cookie_domain
。这不应为空。
【讨论】:
【参考方案2】:会话设置似乎正确,我想建议你,请检查 Application/Config/autoload.php 中的会话库
$autoload['libraries'] = array('session');
希望对你有帮助
【讨论】:
我不明白,为什么你会得到一个错误,如果你会加载会话库,我认为这是正确的方法以上是关于CodeIgniter 3 会话在页面刷新后销毁的主要内容,如果未能解决你的问题,请参考以下文章