有一个问题。我不希望人们能够刷新我网站上的一个页面。我该怎么办?
答案 0 :(得分:8)
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
答案 1 :(得分:2)
尝试存储他们上次访问该页面的时间,如下所示:
<?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地址并将其保存在数据库中,但这将需要更多服务器资源。
答案 2 :(得分:0)
限制刷新帖子表单的一个很好的解决方案是在提交表单时重定向浏览器。它的工作原理如下:
结果是,如果用户刷新pageC.php,则表单不会再次提交。如果用户点击后退按钮然后再次转发,则浏览器会重新加载pageC.php,因此表单也未提交。