请原谅,我知道有关于此问题的堆栈溢出有一些问题,但我找不到任何适合我的问题的解决方案。我有一个问题,当会话过期时,页面没有自动重新加载。请帮忙。谢谢!任何帮助,将不胜感激。
这是我尝试过的代码,$_SESSION['created'] = time();
if((time() - $_SESSION['created']) > 600) {
header("Refresh: 1;url='logout.php'");
} else {
$_SESSION['created'] = time();
}
答案 0 :(得分:1)
根据您的需要,您必须在会话有效时每秒检查一次会话,或者不在服务器端检查会话,所以做这样的事情。
1)每隔一秒创建一个javascript和ajax用于检查会话是否已过期
2)session.php页面检查有效会话是否
3)然后根据触发器返回1或-1,它会自动将location.reload()函数移动到logout.php,因为你的顶级条件现在变为真。
<强> session.php文件强>
<?php
session_start();
if(!isset( $_SESSION['created'] ) || (time() - $_SESSION['created']) > 600) {
session_destroy();
echo "-1";
} else {
echo "1";
}
?>
将此javascript粘贴到每个页面
Java脚本:
<script type="text/javascript">
function session_checking()
{
$.post( "session.php", function( data ) {
if(data == "-1")
{
alert("Your session has been expired!");
location.reload();
}
});
}
var validateSession = setInterval(session_checking, 1000);
</script>
此代码应该是每个页面顶部
if(!isset( $_SESSION['created'] ) || (time() - $_SESSION['created']) > 600) {
header("Refresh: 1;url=logout.php");
} else {
$_SESSION['created'] = time();
}