首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP CodeIgniter --曲奇过期后唱出来,但是页面还在,该怎么办?

PHP CodeIgniter --曲奇过期后唱出来,但是页面还在,该怎么办?
EN

Stack Overflow用户
提问于 2016-03-01 18:23:18
回答 2查看 81关注 0票数 1

我不知道该把什么写在标题里,因为我觉得这个情况有点复杂和尴尬。

我有一个你可以登录的接口,还有一个仪表板。这里有一个输入,让我们搜索数据库中的项,结果通过$.ajax返回。

现在,如果用户在页面上停留的时间太长,那么他们的cookie就过期了,但是它们仍然在页面上。因此,当他们在输入中输入某些内容时,"is_logged_in()“就会被触发,返回false,然后像应该的那样吐出登录屏幕。

但是,由于ajax将返回的任何内容加载到某个div中,因此它最终会在搜索的条目应该出现的区域内加载整个登录窗口(如果这是有意义的话)。

在将返回的数据加载到div之前,我考虑过使用JavaScript读取返回的数据,但我试图避免使用JS重定向,除非这是绝对必要的。

有办法绕过这事吗?

所有的帮助都是感激的。

EN

回答 2

Stack Overflow用户

发布于 2016-03-01 18:34:58

您需要每N秒钟检查一次会话。如果会话过期,只需重新加载页面。以上代码每5秒检查一次会话是否过期。

JS

代码语言:javascript
复制
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

代码语言:javascript
复制
session_start();
$name = $_SESSION["your_session"];
if($name == '')
{
    //session expired
    echo "1";
} else {
    //session not expired
    echo "0";
}
票数 1
EN

Stack Overflow用户

发布于 2016-03-02 05:46:13

Codeigniter有一个内置方法来检测ajax请求:

代码语言:javascript
复制
$this->input->is_ajax_request();

你能做的是:

  1. 发出ajax请求
  2. 检查is_ajax_request是否已登录
  3. 如果是这样,将类似于“拒绝”的内容发送到ajax站点。
  4. 如果传入数据===“拒绝”,则通过javascript进行重定向。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35730496

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档