我不知道在标题中放什么,因为我发现情况有点复杂和尴尬。
我有一个可以登录的界面,还有一个仪表板。在那里有一个输入,让你搜索数据库中的项目,结果通过$ .ajax返回。
现在,如果用户在页面上停留的时间过长,他们的Cookie会过期,但它们仍然在页面上。因此,当他们在输入中键入内容时,“is_logged_in()”会被触发,返回false,然后吐出登录屏幕,就像它应该的那样。
但是因为ajax正在加载返回到某个div的任何内容,它最终会加载整个登录窗口 in 搜索项目应该出现的区域,如果是有道理。
我考虑使用JavaScript在将其加载到div之前读取返回的数据,但我试图避免使用JS重定向,除非绝对必要。
有什么方法吗?
感谢所有帮助。
答案 0 :(得分:1)
您需要每隔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";
}
答案 1 :(得分:0)
Codeigniter有一个用于检测ajax请求的内置方法:
$this->input->is_ajax_request();
你能做的是:
提出ajax请求
检查是否is_ajax_request并且未登录
如果是这样,请发送类似&#34;拒绝&#34;到ajax网站
如果传入的数据===&#34;被拒绝&#34;