根据Codeigniter中的用户角色设置会话超时

时间:2016-03-03 09:36:00

标签: php codeigniter session

Codeigniter中有一个用于设置会话到期的配置设置:

$config['sess_expiration'] = 14400; //in seconds

但这适用于所有类型的用户角色(admin / frontend用户)。我想为管理员设置一个生命周期会话,只想为前端用户应用以上设置。

我怎么能实现这个目标?

2 个答案:

答案 0 :(得分:1)

会话数据存储在服务器上,如果浏览器关闭,它就会被破坏。终身登录时,您需要使用cookie 防爆。 “记住我的选择”

如果要使用会话实现,则需要手动执行:例如。

if ($ROLE != 'admin' && isset($_SESSION['LAST_ACTIVITY']) && (time() - $_SESSION['LAST_ACTIVITY'] > 1800)) {
    // last request was more than 30 minutes ago
    session_unset();     // unset $_SESSION variable for the run-time 
    session_destroy();   // destroy session data in storage
}
$_SESSION['LAST_ACTIVITY'] = time(); // update last activity time stamp

我已经提供了核心php的示例,您可以使用

在codeigniter中实现它

$this->session->userdata('LAST_ACTIVITY');

答案 1 :(得分:1)

$this->load->helper('cookie');
$cookie = $this->input->cookie('ci_session'); 
$this->input->set_cookie('ci_session', $cookie, '31557600'); 

虽然我不确定会话永远不会过期,但如果用户以管理员身份登录,您可能会将会话cookie设置为将来一年到期。