我不知道该在标题中写什么,因为我发现情况有点复杂和尴尬。
我有一个您可以登录的界面,并且有一个仪表板。那里有一个输入,可让您在数据库中搜索项目,结果通过 $.ajax 返回。
现在,如果用户在页面上停留的时间过长,他们的 cookie 就会过期,但他们仍然在页面上。因此,当他们在输入中键入内容时,“is_logged_in()”就会被触发,返回 false,并弹出登录屏幕,就像它应该做的那样。
但是因为 ajax 正在加载返回到某个 div 的任何内容,所以它最终会加载整个登录窗口内部搜索项目应该出现的区域,如果这样的话有道理。
我考虑过使用 JavaScript 来读取返回的数据,然后再将其加载到 div 中,但除非绝对必要,否则我会尽量避免使用 JS 进行重定向。
有办法解决这个问题吗?
感谢所有帮助。
最佳答案
您需要每 N 秒检查一次 session 。如果 session 过期,只需重新加载页面即可。上面的代码每 5 秒检查一次 session 是否过期。
<小时/>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";
}
关于javascript - PHP CodeIgniter - cookie 过期但页面仍然存在,该怎么办?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35730496/