【问题标题】:CodeIgniter: Session ends on new session id generationCodeIgniter:会话在新的会话 id 生成时结束
【发布时间】:2017-03-27 13:21:03
【问题描述】:

我正在使用 CodeIgniter 3.0.0,我遇到了一个问题,即在生成新的会话 ID 时会话不断被破坏。这是我的会话配置。所以在这个例子中,会话总是在 300 秒后超时。

$config['sess_driver'] = 'database';
$config['sess_cookie_name'] = 'ci_session';
$config['sess_expiration'] = 7200;
$config['sess_save_path'] = 'ci_sessions';
$config['sess_match_ip'] = FALSE;
$config['sess_time_to_update'] = 300;
$config['sess_regenerate_destroy'] = FALSE;

我已对其进行调试并将其缩小到system/libraries/Session/Session.php 的第 625 行

public function sess_regenerate($destroy = FALSE)
{
    $_SESSION['__ci_last_regenerate'] = time();
    session_regenerate_id($destroy); //If I uncomment this line it fixes the bug
}

我可以禁用会话重新生成,但出于安全原因,我知道这很重要。有没有其他人有这个问题?

值得我指出的是,我没有在本地遇到这个问题所以也许我的服务器设置了这个问题?

【问题讨论】:

  • 您处理身份验证的方式可能有问题,您能否说明您的设置中使用了哪个授权系统或库?
  • 先升级CI。 3.0.0 以来,有大约 20 个与会话相关的错误修复;最新版本是 3.1.2。

标签: php codeigniter session


【解决方案1】:

我在 PHP7 上遇到了同样的问题,并且已经解决。将您的 CI 升级到 3.1.2 或更高版本。 https://www.codeigniter.com/userguide3/installation/upgrade_312.html

【讨论】:

    猜你喜欢
    • 2019-08-13
    • 1970-01-01
    • 2018-07-31
    • 2013-10-02
    • 1970-01-01
    • 2011-12-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多