Php 避免注销后返回

Php 避免注销后返回,php,cookies,Php,Cookies,我发现了这些问题,op和我有同样的问题 然而,我不能解决我的问题。用户按“注销”按钮,然后页面被重定向到index.php,但浏览器中的“后退”按钮将页面重定向到以前的内容(受登录保护) 刷新后,一切正常,返回按钮停止工作->用户被重定向到登录表单 php文件 <?php header ("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); // Date in the past header ("Last-Modified: " . gmdate(

我发现了这些问题,op和我有同样的问题

然而,我不能解决我的问题。用户按“注销”按钮,然后页面被重定向到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>

即使用户可以按“上一步”按钮查看受登录保护的上一页,但这并不意味着用户再次登录。他们什么也做不了——这只是他们以前浏览过的页面的静态副本

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

在大多数情况下,即使用户登录,也可以安全地让后退按钮正常工作。当用户登录时,破坏后退按钮将对用户的可用性产生不良影响。为了防止用户在注销后返回页面,您必须确保他们在登录时查看的所有页面不能使用“后退”按钮返回,这会中断他们整个会话的“后退”按钮


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

即使用户可以按“后退”按钮并查看受登录保护的上一页,也不意味着用户再次登录。他们什么也做不了——这只是他们以前浏览过的页面的静态副本

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

在大多数情况下,即使用户登录,也可以安全地让后退按钮正常工作。当用户登录时,破坏后退按钮将对用户的可用性产生不良影响。为了防止用户在注销后返回页面,您必须确保他们在登录时查看的所有页面不能使用“后退”按钮返回,这会中断他们整个会话的“后退”按钮

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

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

即使您可以使用backbutton返回,也无法执行任何操作。您还可以使页面不可缓存

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


即使您可以使用backbutton返回,也无法执行任何操作。您还可以使页面不可缓存

这不会影响最终用户使用浏览器中的“上一页”按钮返回上一页的能力。是的。“这不会影响最终用户使用浏览器中的“后退”按钮返回上一页的能力”。但它限制用户执行任何操作。“后退”按钮是浏览器查看上一页的功能。这是用户可以查看以前访问过的页面的任何网站的预期行为。这不会影响最终用户使用浏览器中的“上一页”按钮返回上一页的能力。是。“这不会影响最终用户使用浏览器中的“后退”按钮返回上一页的能力”。但它限制用户执行任何操作。“后退”按钮是浏览器查看上一页的功能。这是用户可以查看以前访问过的页面的任何网站的预期行为。例如,在facebook中,注销后,您无法查看您的个人资料页面(后退按钮)。我想要的是同样的行为。我相信Facebook正在使用各种Javascript技术,比如在你注销后重写浏览器历史记录。这是非常新的,与HTML5相关。试着按住“后退”按钮,转到前一页-前两页或其他什么。例如,在facebook上,注销后,你看不到你的个人资料页(后退按钮)。我想要的是同样的行为。我相信Facebook正在使用各种Javascript技术,比如在你注销后重写浏览器历史记录。这是非常新的,与HTML5相关。试着按住后退按钮,转到前一页-前两页或其他。