php中的会话超时无法正常工作,想知道我的错误是什么吗?
我正在使用PHP解决会话超时问题……我找到了一些解决方案,因此我选择了我最了解的解决方案,即:php中的会话超时无法正常工作,想知道我的错误是什么吗?,php,session,timeout,echo,Php,Session,Timeout,Echo,我正在使用PHP解决会话超时问题……我找到了一些解决方案,因此我选择了我最了解的解决方案,即: $now = time(); // checking the time now when home page starts if($now > $_SESSION['expire']) { session_destroy(); echo "Your session has expire ! <a href='login.php'>Login
$now = time(); // checking the time now when home page starts
if($now > $_SESSION['expire'])
{
session_destroy();
echo "Your session has expire ! <a href='login.php'>Login Here</a>";
};
从
结果是消息您的会话已过期
确实出现了,但是页面仍然在主页中,而不是返回登录页面……我想知道是否通过添加标题('Location:login.php')回显行下方的代码>会将其带回登录页面
如何将echo消息改为弹出消息,并将页面返回到login.php
谢谢…我知道网上有答案,但我想知道我的错误在哪里,这样我可以在这里学到一些东西…非常感谢您的教学和指导您不能重复某些内容,同时通过header()调用重定向到主页。标头调用要求您不回显任何内容。此外,弹出窗口需要使用某种客户端脚本(ECMAScript/JavaScript)。尝试在注销时输出此代码,而不是您的消息:
<script>
alert('Your session have expired! Please login again.');
location.href = 'login.php';
</script>
在login.php:
if(isset($_SESSION['error'])) {
printf('<p class="error">%s</p>', $_SESSION['error']);
unset($_SESSION['error']);
}
if(isset($\u会话['error'])){
printf(“%s
”,$\u会话['error']);
取消设置($_会话['error']);
}
要显示通知并重定向到login.php吗?这有点棘手。如果您使用header函数,则重定向将立即生效。因此,用户看不到您的回显文本。您可以在延迟x秒后使用JavaScript重定向,以便用户有时间读取通知,然后重定向到login.php。如果您这样做,那么最好在回显通知(和JavaScript)后退出脚本,这样页面的其余部分就不会被渲染。否则这可能会导致混淆。这是一个很好的答案,很好地解释了正确的方法……但您可以在设置重定向调用标题(“刷新:0;url=login.php”)后回显内容代码>;)劳伦斯,这个信息不会被看到。仅仅因为你在技术上可以回显内容并不意味着这是正确的做法(因为它不会被用户看到)。非常感谢你设法用你的答案解决问题..谢谢!
function my_session_destroy() {
$_SESSION = array();
}
if (/* session expired ...*/) {
my_session_destroy();
$_SESSION['error'] = 'Your session have expired. Please login and try again.';
header('Location: login.php');
exit(); //Always call exit() after a header('Location: ...') call!
}
if(isset($_SESSION['error'])) {
printf('<p class="error">%s</p>', $_SESSION['error']);
unset($_SESSION['error']);
}