【问题标题】:Clear form post data清除表单发布数据
【发布时间】:2014-10-03 15:14:31
【问题描述】:

我有一个 3 页系统,表单 > 发布 > 提交,就位。我遇到的问题是,如果用户从提交的页面按下后退按钮,它会将他们带到表单页面,并填写值,所以如果他们点击提交,它会重新输入数据。

在通常情况下,用户正常返回索引页面,有一个过程,我们检查用户ip在过去一个小时内出现在所述数据库(mysql)中的次数,并基于限制发布能力在那。但如果他们反击,那个系统就无效了。

防止这种情况发生的唯一代码是:

ob_start();
header('Cache-Control: private');

但这似乎无济于事。

任何帮助将不胜感激!

【问题讨论】:

  • 如果您在处理完表单后使用 header(Location...) 将它们发送到索引页面,那么他发布的数据将被清除。
  • 问题是我需要“已提交”页面来显示有关他们如何返回个人帖子的信息。
  • 而且,如果用户只是按了几次,他们就可以重新发布。

标签: php html forms


【解决方案1】:

我有一个快速的解决方案:

<?php
//Check for double post
//Start session
session_start();
$process = true;
if(isset($_POST)){
    if(isset($_SESSION['olddata'])){
       if($_SESSION['olddata'] == $_POST){
          $process = false;
       }
       $_SESSION['olddata'] == $_POST;
    }

}

//Now you can check $process before you do something with the data

?>

【讨论】:

    【解决方案2】:

    在提交数据或重定向(更改标题位置)到另一个包含所需信息的成功/提交页面之前进行 POST 检查。这样,如果他们点击返回,他们会返回到原始提交页面,该页面会将他们重定向回成功/提交页面。

    还有其他解决方案,但这完全取决于目的——这是为了防止标准用户犯下愚蠢的错误还是恶意用户。

    【讨论】:

      【解决方案3】:

      你可以试试:

      header('Cache-Control: no-cache');
      

      我看不出启用输出缓冲如何防止这种行为,因此您可能希望省略 ob_start() 和 ob_flush() 调用。

      但我同意这样做会更好:

      header("Location: mypage.php?somepublicdata=this+is+public");
      

      然后使用 $_SESSION 来结转 $_POST 数据。

      【讨论】:

        【解决方案4】:

        不应该这样工作吗? (我自己没试过。)

        <head>
        <script>
        function clearForms()
        {
          var i;
          for (i = 0; (i < document.forms.length); i++) {
            document.forms[i].reset();
          }
        }
        </script>
        </head>
        <body onLoad="clearForms()" onUnload="clearForms()">
        </body>
        

        【讨论】:

        • 理论上是的,问题是如果用户输入数据错误,即机器人过滤器,它会要求他们返回并重试,但是使用此代码,所有数据都将被擦除并且他们必须再做一次,这会降低用户体验......
        • 我不太确定你现在想要什么。你有机器人过滤器吗?它是表格的一部分吗?如果是这样,您应该可以使用以下方法清除它:document.form_name.input_name.reset();不过不太确定。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-03-07
        • 1970-01-01
        • 1970-01-01
        • 2013-12-03
        • 2018-12-01
        • 2021-09-24
        • 2018-08-20
        相关资源
        最近更新 更多