防止浏览器表单重新提交警报

时间:2014-06-08 17:19:55

标签: php

如何避免浏览器表单重新提交警报?

enter image description here

这个问题似乎已在SO上进行了很多讨论,例如:

我从前面的讨论中得不到的是我如何使用发布的数据并将其合并到html中。前面的链接讨论了如何使用php头函数向自己发送get请求。但是当发送此get请求时,发布的数据将不再可用于新页面,(因为我们无法使用php post方法..)

我想在不使用phpjavascript会话存储技术(或将发布的数据保存到临时mySQL数据库)的情况下执行此操作。

举个简单的例子:

<html>
   <body>
      <form action="post.php" method="post">
      User name: <input type="text" name="user"><br>
         <input type="submit" value="Submit">
      </form>
   </body>
</html>

其中post.php是:

<html>
   <body>
      <?php
          echo "<p>".$_POST['user']."</p>";
      ?>
   </body>
</html>

在第二页的Google Chrome中按 CTRL-R 会显示警告。

3 个答案:

答案 0 :(得分:2)

post.php进行重定向。将数据保存在会话或数据库中,并从重定向页面检索。

示例场景:

  • 提交表格
  • 将用户记录保存到db,获取新记录的ID,例如在$id
  • 使用标题重定向,例如:
    header('Location: result.php?user_id='.$id);
  • 从db获取用户记录,使用提供的ID并将其显示给 用户。

答案 1 :(得分:1)

使用此:

<script>
if(window.history.replaceState) 
{
window.history.replaceState(null,null,window.location.href);
}
</script>

答案 2 :(得分:0)

您可以重写浏览器history对象

history.replaceState("", "", "/the/result/page");

请参阅this