防止退出后返回页面


PHP Prevent going back page after log out

我有一个受保护的页面,它只向登录的用户显示数据,一旦用户单击注销链接,它会破坏会话数据并重定向到另一个页面。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>");
?>