【问题标题】:CodeIgniter 3 sessions destroy after page refreshCodeIgniter 3 会话在页面刷新后销毁
【发布时间】: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 这也返回相同?

标签: php codeigniter session xampp


【解决方案1】:

您的代码看起来正确。我想您可以看看Native-session。这可能会解决您的问题。

还要检查config.php 是否有cookie_domain。这不应为空。

【讨论】:

    【解决方案2】:

    会话设置似乎正确,我想建议你,请检查 Application/Config/autoload.php 中的会话库

    $autoload['libraries'] = array('session');
    

    希望对你有帮助

    【讨论】:

    • 我不明白,为什么你会得到一个错误,如果你会加载会话库,我认为这是正确的方法
    猜你喜欢
    • 2013-10-24
    • 2016-11-19
    • 2016-04-01
    • 2013-10-06
    • 1970-01-01
    • 2015-08-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多