javascript - PHP CodeIgniter - cookie 过期但页面仍然存在,该怎么办?

标签 javascript php jquery codeigniter cookies

我不知道该在标题中写什么,因为我发现情况有点复杂和尴尬。

我有一个您可以登录的界面,并且有一个仪表板。那里有一个输入,可让您在数据库中搜索项目,结果通过 $.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/

相关文章:

javascript - 传递 '&' 和空格 javascript

php - 在php中连接到数据库并包含一次,但连接文件不在根目录中

javascript - 我怎样才能将我的jquery变量值打印到div中,但是我在名为count的变量中得到了我的值

php - 安装 mysqli 是否意味着我的 mysql 查询将不再工作?

javascript - 如何禁止在 Kendo DatePicker 中输入文本字符?

javascript - 在元素之间插入新的 DOM

javascript - angularjs + requirejs = 参数 'controller' 不是函数,未定义

javascript - JS - jQuery 可拖动可调整大小的容器中的多个 div 互相插入

javascript - 在javascript中对并行数组进行排序

php - 同一个表单如何向多个表提交数据