我有一个受保护的页面,只显示登录用户的数据,一旦用户点击注销链接,它就会破坏会话数据并重定向到另一个页面。 header('Location: login.php');
现在一旦页面被重定向到login.php,我就可以轻松地转到受保护的页面,并且可以看到那里的所有信息,并且可以保留在页面上,直到我刷新浏览器或关闭它。
在Gmail和其他许多网站上,一旦您登录,就无法返回页面。如何实现? 感谢。
编辑:对不起,如果不清楚,受保护的页面顶部有几行代码来检查会话是否设置。如果未设置会话,则应重定向到其他页面。但问题是,如果我点击浏览器上的后退按钮,它就不会检查会话。
答案 0 :(得分:4)
此行为可能是由浏览器/网络服务器的默认缓存设置引起的。
每当用户访问受保护的页面时,请尝试发送标头以防止缓存页面:
header('Cache-Control: no-cache, must-revalidate');
header('Expires: Sat, 26 Jul 1997 05:00:00 GMT');
这通常会导致任何后退按钮导致页面完全重新加载,而不是从浏览器的缓存中加载它。
答案 1 :(得分:2)
将它放在受保护页面的顶部:
//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">
答案 2 :(得分:0)
此代码解决问题
<?php
echo("<script>location.href = './login.php';</script>");
?>