Php 如何限制刷新选项?

Php 如何限制刷新选项?,php,mysql,refresh,option,Php,Mysql,Refresh,Option,有一个问题。我不希望人们能够刷新我网站上的一个页面。我该怎么做?刷新是一种浏览器端解决方案。您不能从服务器端对其进行限制 实际上,您可以使用PHP的会话来阻止人们访问任何页面两次 <?php session_start(); if(!isset($_SESSION['disablethispage'])){ $_SESSION['disablethispage'] = true; // serving the page first time }else{ //

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

刷新是一种浏览器端解决方案。您不能从服务器端对其进行限制

实际上,您可以使用PHP的会话来阻止人们访问任何页面两次

<?php

session_start();

if(!isset($_SESSION['disablethispage'])){
    $_SESSION['disablethispage'] = true;
    // serving the page first time

}else{
    // visited before or page was refreshed

}

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

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

<?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();
}
?>
  • 表单位于pageA.php上,并提交到pageB.php
  • php做一个标题(“Location:pageC.php”);处理表单数据后(302重定向)
  • 在pageC.php上显示用户执行的操作的结果

结果是,如果用户刷新了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();
}
?>

这会将页面加载限制为每10秒一次


此方法取决于用户不清空Cookie,因此如果您需要更严格的解决方案,您必须检查IP地址并将其保存到数据库中,但这将需要更多的服务器资源。

您的意思是“刷新”还是“在浏览器中重新加载”?我不希望人们可以刷新$\u POST表单。我知道我可以用$_会话完成,但我必须找到其他方法。