CodeIgniter扩展用户的会话到期时间

时间:2010-04-08 20:17:58

标签: codeigniter session cookies

是否可以在CI中扩展用户的会话到期时间。我想要做的是,默认情况下,每个用户的会话cookie持续例如1天,但每次用户访问该站点时,他的会话到期时间会延长一天。

我不知道这样做是不是一个好主意,也许我应该将Cookie的生命时间设置为一周,就是这样?

6 个答案:

答案 0 :(得分:10)

我相信你想要的实际上是默认行为。 看看/system/libraries/Session.php中的sess_read()和sess_update()

活动会话的last_activity每五分钟更新一次。

使用last_activity + sess_expiration<来检查会话到期时间现在

因此,对于您想要的行为,只需将您的sess_expiration时间设置为86400(一天),您应该全部设置。

答案 1 :(得分:5)

来自User Guide

  

$ sess_expiration :您希望会话持续的秒数。默认值为2小时(7200秒)。如果您希望非过期会话将值设置为零:0

希望这是你想要做的事情?

答案 2 :(得分:2)

您是在谈论CodeIgniter中的Session组件吗?您可以转到config.php并设置$sess_expiration = 7200;(默认为7200)

http://codeigniter.com/user_guide/libraries/sessions.html

答案 3 :(得分:1)

Crash的代码对我有用

$this->config->set_item('sess_expiration', $sec);
$this->session->sess_destroy();
$this->session = new CI_Session();
// where $sec is the seconds until expiration

... https://stackoverflow.com/a/31281131/5299541

答案 4 :(得分:0)

codeigniter中的默认会话时间是

$sess_expiration = 7200; // This is 2 hours

您也可以设置$sess_expiration = 0;这意味着您将永远设置会话。

实际上我可以在codeigniter库中看到Session.php

// Set the session length. If the session expiration is
// set to zero we'll set the expiration two years from now.
if ($this->sess_expiration == 0)
{
     $this->sess_expiration = (60*60*24*365*2);
}

答案 5 :(得分:0)

您可以使用:

$this->config->set_item('sess_expiration', $sec);
$this->session->sess_destroy();
$this->session = new CI_Session();
// where $sec is the seconds until expiration
相关问题