Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
CodeIgniter扩展用户';s会话到期时间_Codeigniter_Session_Cookies - Fatal编程技术网

CodeIgniter扩展用户';s会话到期时间

CodeIgniter扩展用户';s会话到期时间,codeigniter,session,cookies,Codeigniter,Session,Cookies,是否可以在CI中延长用户的会话过期时间。我想做的是,默认情况下,每个用户的会话cookie持续一天,但每次用户访问站点时,其会话到期时间都会再延长一天 我不知道这样做是否是一个好主意,也许我应该将cookies的生存时间设置为一周,就这样?您是在谈论CodeIgniter中的会话组件吗?您可以转到config.php并设置$sess\u expiration=7200(默认值为7200) 来自: $sess\u expiration:希望会话持续的秒数。默认值为2小时(7200秒)。如果希望使用

是否可以在CI中延长用户的会话过期时间。我想做的是,默认情况下,每个用户的会话cookie持续一天,但每次用户访问站点时,其会话到期时间都会再延长一天


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

您是在谈论CodeIgniter中的会话组件吗?您可以转到config.php并设置
$sess\u expiration=7200(默认值为7200)

来自:

$sess\u expiration:希望会话持续的秒数。默认值为2小时(7200秒)。如果希望使用非过期会话,请将该值设置为零:0


希望这就是你想要做的?

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

// 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);
}
活动会话的最后一个活动每五分钟更新一次

使用上次活动+sess\u expiration
因此,对于您想要的行为,只需将您的sess_过期时间设置为86400(一天),您就可以完成所有设置。

codeigniter中的默认会话时间为

$sess_expiration = 7200; // This is 2 hours
您还可以设置
$sess\u expiration=0这意味着您正在设置永久会话

实际上我可以在codeigniter library 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);
}
您可以使用以下选项:

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

我对$sess_expiration的理解只是告诉我们会话cookie自创建以来的生存时间,在本例中为2小时,我想要实现的是,如果用户处于活动状态,他的会话cookie理论上不会过期。我希望这能更清楚地说明…您应该在config.php文件中设置它,而不是在实际的库文件中。升级codeigniter core时,您将丢失更改。作为记录,我的意思是查看系统文件,以了解codeigniter的会话如何与原始问题相关,而不是在那里进行任何更改,但我可以看出这可能是不清楚的。