关于超时登录重定向到登录页面

前提:PHP项目没用框架写

session过期的时候,在入口脚本中重定向到登录页面:

if(/*判断session过期条件*/){  
   header('Location:./index.php');  
   exit;  
}

这里要注意几点:

1、location和:之间不能有空格,否则会出错。

2、在用header前不能有任何的输出,包括include的页面中标签”?>”后不能有空格。

3、PHP的header跳转之前不能有任何内容输出,因为PHP开始执行的时候就已经向浏览器送出HTTP头信息,之后就不再允许更改了。但是如果必须要在输出之后

再处理header 信息的话,可以使用ob_start()  ob_end_flush() 来缓存一下要发送的内容,等到header继续再发送内容。或者一个更简单的办法,修改php.ini,

找到output_buffering=off 修改为 output_buffering=4096。

最后需要注意的一点:

php header跳转之后,要在header函数之后加上exit()来结束脚本执行,如果不加exit(),则会执行后面的语句。

但是,还是遇到了问题:

ajax和header: 登录超时的时候,点击ajax提交时卡死了,没能成功跳转。

可能是由于session超时,ajax的某个机制判断到跑error函数了。

解决办法:

现在登录页面的登录按钮button里添加个id (如:id=”toLogin”)

在一般的ajax的错误函数里写:

error(xhr){  
    if (xhr.responseText.indexOf('timeoutToLogin') > -1) {                  
        location.reload();                   
    }  
  
}

这里的参数是xhr,不要写错

如果是jQuery.validationEngine.js表单验证插件,这样写:

它的错误函数是 onFailure

onFailure: function (xhr) {  
    if (xhr.responseText.indexOf('timeoutToLogin') > -1) {      
        location.reload();        
    }  
}

欢迎分享本文,转载请保留出处:前端ABC » 关于超时登录重定向到登录页面

分享到:更多 ()

发表评论 0