注销后避免回去

时间:2011-11-04 03:15:52

标签: php cookies

我发现了这些问题,其中op与我的问题相同。

1 2

然而,我无法解决我的问题。用户按下注销按钮,然后页面被重定向到index.php,但浏览器中的后退按钮将页面重定向到以前的内容(受登录保护)。

刷新后,一切正常,后退按钮停止工作 - >用户被重定向到登录表单。

php文件

<?php
header ("Expires: Mon, 26 Jul 1997 05:00:00 GMT");    // Date in the past
header ("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header ("Cache-Control: no-cache, must-revalidate");  // HTTP/1.1
header ("Pragma: no-cache");

if(empty($_COOKIE['first_name'])) {
    header("Location:index.php");
    exit();
}

if(isset($_GET['logout'])) {
    setcookie ("first_name", "", time() - 3600);
    unset($_COOKIE);
    header("Location:index.php");
    exit();
}

?>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html> 
<head>   
<META HTTP-EQUIV="CACHE-CONTROL" CONTENT="NO-CACHE">
</head>
<body>

    <a href="?logout">logout</a>

</body>
</html>

2 个答案:

答案 0 :(得分:1)

即使用户可以按后退按钮并查看上一页受登录保护,但并不意味着用户再次登录。他们无能为力 - 它只是他们以前浏览过的页面的静态副本。

用户可以按后退按钮并查看以前的页面是正常行为,并且站点不应尝试打破此操作。这是一个浏览器功能。

在大多数情况下,即使用户登录也允许后退按钮正常运行是安全的。在用户登录时断开后退按钮会对用户造成不良的可用性后果。为了防止用户在注销后返回页面,您必须确保他们在登录时查看的所有页面都无法使用后退按钮返回,这会打破整个会话的后退按钮。

您可以使用一些方法尝试禁用登录会话的后退按钮,例如通过声明页面不可缓存(和不可存储)。这些可能会或可能不会提供不同程度的防止后退按钮使用的保护。关于禁用后退按钮的stackoverflow还有很多其他问题 - 如果你想忽略建议并试图阻止它,请检查它。

答案 1 :(得分:0)

您可以尝试以下方法: 创建一个存储session_id的会话表。 当用户登录时,您在$ _SESSION中创建session_id并存储会话ID。您加载的每个页面,首先检查session_id是否在数据库中可用。如果没有,你去记录页面。否则你加载页面,在注销时你从数据库中删除session_id。

即使您可以使用后退按钮返回,也无法进行操作。你也可以使页面不可缓存