PHP防止在注销后返回页面

时间:2011-07-11 09:21:59

标签: php security session

我有一个受保护的页面,只显示登录用户的数据,一旦用户点击注销链接,它就会破坏会话数据并重定向到另一个页面。 header('Location: login.php');

现在一旦页面被重定向到login.php,我就可以轻松地转到受保护的页面,并且可以看到那里的所有信息,并且可以保留在页面上,直到我刷新浏览器或关闭它。

在Gmail和其他许多网站上,一旦您登录,就无法返回页面。如何实现? 感谢。

编辑:对不起,如果不清楚,受保护的页面顶部有几行代码来检查会话是否设置。如果未设置会话,则应重定向到其他页面。但问题是,如果我点击浏览器上的后退按钮,它就不会检查会话。

3 个答案:

答案 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>");
?>