如何限制刷新选项?

时间:2009-12-27 12:56:28

标签: php mysql refresh option

有一个问题。我不希望人们能够刷新我网站上的一个页面。我该怎么办?

3 个答案:

答案 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)

你不能。如果你解释为什么你不希望人们能够刷新页面,也许我们可以解释一个更好的解决方案。

编辑:

限制刷新帖子表单的一个很好的解决方案是在提交表单时重定向浏览器。它的工作原理如下:

  • 表单在pageA.php上,并提交给pageB.php
  • pageB.php做一个标题(“Location:pageC.php”);处理表单数据后(302重定向)
  • 在pageC.php上显示用户执行操作的结果。

结果是,如果用户刷新pageC.php,则表单不会再次提交。如果用户点击后退按钮然后再次转发,则浏览器会重新加载pageC.php,因此表单也未提交。