我正在创建一个帮助台系统,有时用户在不使用系统的情况下超过两个小时,然后在会话过期时返回,但最后加载的页面仍保留在屏幕上(例如,表格)和用户可以正常使用它,但是当他提交表单时,他被重定向到登录页面(没关系),但是用户丢失了输入的数据。
我想创建一个AJAX函数来检查会话是否已过期。该功能应使用setTimeout()
或setInterval()
执行。
我已经尝试使用"sess_expiration"
,但似乎这个值在页面加载时没有重置,即在结束指定时间(默认为7200)后,它会强制会话到期。
答案 0 :(得分:4)
你可以这样做
$.ajax({
type : 'POST',
url : '<?php echo site_url('controllername/methodname')?>'
success : function(data){
if(data){
//session available
}else{
// expired
}
});
和控制器方法
function methodname(){
$user_id = $this->session->userdata('user_id');
if($user_id){
echo 1;
}else{
echo 0;
}
}
您可以在函数中包装ajax请求,并且每次都使用TRUE或FALSE返回结果。此外,setInterval可以调用此函数来检查会话。
答案 1 :(得分:0)
Codeigniter会话类有让我们知道会话到期的方法。
function your_method(){
$this->session->sess_read() === false ? echo "0" : echo "1";
}