【问题标题】:avoid go back after logout避免退出后返回
【发布时间】:2011-12-21 17:12:11
【问题描述】:

我发现了这些问题,操作员和我有同样的问题。

12

但是,我无法解决我的问题。用户按下注销按钮,页面被重定向到 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>

【问题讨论】:

    标签: php cookies


    【解决方案1】:

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

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

    在大多数情况下,即使在用户登录时允许后退按钮正常操作也是安全的。在用户登录时打破后退按钮会给用户带来不好的可用性后果。为了防止用户在退出后返回页面,您必须确保他们在登录时查看的所有页面都不能使用返回按钮返回,这会破坏他们整个会话的返回按钮。

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

    【讨论】:

    • 例如,在 facebook 中,注销后您看不到您的个人资料页面(后退按钮)。我想要的是相同的行为。
    • 我相信 Facebook 正在使用各种 Javascript 技术,例如在您注销后重写浏览器历史记录。这是非常新的并且与 HTML5 相关联。 Here's a description of it。尝试按住后退按钮并转到上一页 - 前两页或其他内容。
    【解决方案2】:

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

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

    【讨论】:

    • 这不会影响最终用户使用浏览器中的后退按钮返回上一页的能力。
    • 是的。 “这不会影响最终用户使用浏览器中的后退按钮返回上一页的能力”。但它限制用户进行任何操作。后退按钮是浏览器查看上一页的功能。这是用户可以查看之前访问过的页面的任何网站的预期行为。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-17
    • 1970-01-01
    • 1970-01-01
    • 2016-11-06
    • 1970-01-01
    相关资源
    最近更新 更多