【发布时间】:2010-12-30 06:27:37
【问题描述】:
有问题。我不希望人们能够刷新我网站上的一个页面。我该怎么做?
【问题讨论】:
-
你的意思是“刷新”就像“在他们的浏览器中重新加载”一样吗?
有问题。我不希望人们能够刷新我网站上的一个页面。我该怎么做?
【问题讨论】:
Refresh 是一种浏览器端解决方案。你不能从服务器端限制它。
实际上你可以做的是使用 PHP 的 SESSION 来真正防止人们访问任何页面两次。
<?php
session_start();
if(!isset($_SESSION['disablethispage'])){
$_SESSION['disablethispage'] = true;
// serving the page first time
}else{
// visited before or page was refreshed
}
但是,如果用户删除了您网站的会话 cookie,他/她仍然能够返回到同一页面。
如果您谈论的是双重发布,您可能需要查看 POST-REDIRECT-GET 解决方案。见:http://en.wikipedia.org/wiki/Post/Redirect/Get
【讨论】:
你不能。如果你解释为什么你不希望人们能够刷新页面,也许我们可以解释一个更好的解决方案。
限制刷新帖子表单的一个很好的解决方案是在提交表单时重定向浏览器。它的工作原理是这样的:
结果是如果用户刷新pageC.php,那么表单就不会再次提交。如果用户点击后退按钮然后再次前进,浏览器会重新加载 pageC.php,因此表单也不会提交。
【讨论】:
尝试存储他们上次访问该页面的时间,如下所示:
<?php
session_start();
if(isset($_SESSION['last_visit']) && time() - $_SESSION['last_visit'] < 10) {
die('Wait ten seconds before you reload this page');
}else{
$_SESSION['last_visit'] = time();
}
?>
这会将页面加载限制为每十秒一次。
此方法取决于用户不会清空其 cookie,因此如果您需要更严格的解决方案,您必须检查 IP 地址并将其保存在数据库中,但这将需要更多的服务器资源。
【讨论】: