【问题标题】:Codeigniter session expiry issue at any time随时出现 Codeigniter 会话到期问题
【发布时间】:2016-09-20 05:10:29
【问题描述】:

我使用 codeigniter,但我不知道为什么 codeigniter 会话随时会过期。它的会话到期没有任何固定的时间。有时当我 5 分钟内什么都不知道并且我只是重新加载页面时,会话就会过期。

这太可怕了。你能帮我解决这个问题吗?以下设置在 config.php 文件中完成。

$config['sess_cookie_name']     = 'ci_session';
$config['sess_expiration']      = 7200;
$config['sess_expire_on_close'] = TRUE;
$config['sess_encrypt_cookie']  = FALSE;
$config['sess_use_database']    = TRUE;
$config['sess_table_name']      = 'ci_sessions';
$config['sess_match_ip']        = FALSE;
$config['sess_match_useragent'] = TRUE;
$config['sess_time_to_update']  = 86400;

这似乎不起作用。

【问题讨论】:

  • 我这是 $config['sess_time_to_update'] = 300; 更改会话到期时间是 $config['sess_expiration'] = 1440; 或者我认为 7200 是 2 小时
  • 有人建议我设置 86400 而不是默认的 300。但它仍然不起作用。我设置了 sess_expiration=7200。但正如我所说,会话随时到期(甚至可能在 5 分钟内到期)。
  • 我认为是整数格式
  • 我在本地工作。但是我也将 $config['encryption_key'] 更改为不同的唯一值。
  • 我还注意到,当我对编码进行一些更改时,会话也会过期。这并不总是发生。但有时它会完成。但我不认为编辑我的 php 代码应该有任何问题。

标签: codeigniter


【解决方案1】:

你可以试试,设置为0就永不过期了。

$config['sess_expiration']      = 0;

关于加密密钥的另一件事,

$config['encryption_key'] = '!$W3nCrYp+!0nK3y';

您可以将您的唯一键更改为相同或使用其他关键字。

【讨论】:

    【解决方案2】:

    你可能想在这里查看我的帖子CodeIgniter unexpected session rotation

    您需要检查 Session.php 中名为“sess_gc”的函数。 sess_gc 函数一旦触发就会删除所有会话记录。这意味着,其他人可以重置您的会话。您可以在删除记录时注释掉该功能或添加一些延迟。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-02-10
      • 1970-01-01
      • 1970-01-01
      • 2012-07-14
      相关资源
      最近更新 更多