前提: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 » 关于超时登录重定向到登录页面