我不知道该把什么写在标题里,因为我觉得这个情况有点复杂和尴尬。
我有一个你可以登录的接口,还有一个仪表板。这里有一个输入,让我们搜索数据库中的项,结果通过$.ajax返回。
现在,如果用户在页面上停留的时间太长,那么他们的cookie就过期了,但是它们仍然在页面上。因此,当他们在输入中输入某些内容时,"is_logged_in()“就会被触发,返回false,然后像应该的那样吐出登录屏幕。
但是,由于ajax将返回的任何内容加载到某个div中,因此它最终会在搜索的条目应该出现的区域内加载整个登录窗口(如果这是有意义的话)。
在将返回的数据加载到div之前,我考虑过使用JavaScript读取返回的数据,但我试图避免使用JS重定向,除非这是绝对必要的。
有办法绕过这事吗?
所有的帮助都是感激的。
发布于 2016-03-01 18:34:58
您需要每N秒钟检查一次会话。如果会话过期,只需重新加载页面。以上代码每5秒检查一次会话是否过期。
JS
var check_session;
function CheckForSession() {
var str="chksession=true";
jQuery.ajax({
type: "POST",
url: "sec.php",
data: str,
cache: false,
success: function(res){
if(res == "1") {
alert('Your session has expired');
}
}
});
}
check_session = setInterval(CheckForSession, 5000);sec.php
session_start();
$name = $_SESSION["your_session"];
if($name == '')
{
//session expired
echo "1";
} else {
//session not expired
echo "0";
}发布于 2016-03-02 05:46:13
Codeigniter有一个内置方法来检测ajax请求:
$this->input->is_ajax_request();你能做的是:
https://stackoverflow.com/questions/35730496
复制相似问题