我有一个受保护的页面,它只向登录的用户显示数据,一旦用户单击注销链接,它会破坏会话数据并重定向到另一个页面。header('Location: login.php');
现在,一旦页面被重定向到login.php,我可以很容易地回到被保护的页面,可以看到那里的所有信息,可以留在页面上,直到我刷新浏览器或关闭它。
在像Gmail这样的网站上,一旦你登录了,你就不能回到返回页面。如何实现这一点?谢谢。
编辑:抱歉,如果它不清楚,受保护的页面在顶部有几行代码来检查会话是否设置。如果会话没有设置,那么它应该重定向到另一个页面。但问题是,它不检查会话,如果我点击浏览器的后退按钮
此行为可能是由浏览器/web服务器的默认缓存设置引起的。
当用户访问受保护的页面时,尝试发送报头以防止页面缓存:
header('Cache-Control: no-cache, must-revalidate');
header('Expires: Sat, 26 Jul 1997 05:00:00 GMT');
这通常会导致任何后退按钮的按下导致页面完全重新加载,而不是从浏览器的缓存加载。
将其置于受保护页面的顶部:
//Probably caused by back button... Check if logged-in...
if(!$_SESSION["usernameWhatever"])
{
//Do not show protected data, redirect to login...
header('Location: login.php');
}
//Show protected data...
这基本上检查用户是否登录,如果没有,重定向到登录页面…
要禁用页面缓存,请将其放在页面的head
标记中:
<META HTTP-EQUIV="CACHE-CONTROL" CONTENT="NO-CACHE">
此代码解决问题
<?php
echo("<script>location.href = './login.php';</script>");
?>