PHP:使用表单确认页面阻止后退/双重提交。我的工作流程正确吗?

时间:2012-03-14 07:31:21

标签: php forms post redirect submission

我无法让这个工作。我试图阻止用户返回到最终提交前显示其信息的表单确认页面。

这是当前的工作流程:

post.php //User enters info; name, date, etc
->clicks submit
verify.php //This page displays the information the user entered before final submission.
           //No database work done
->clicks final submit
verify_f.php //Inserts data into database, REDIRECTS to verify_redirect.php
verify_redirect.php //Redirects to next page, confirm.php
confirm.php //Final screen. Lets user know that his data was successfully entered

问题是confirm.php一旦用户可以点击他的后退按钮并且在verify_f.php,即确认页面上,他输入的所有数据都显示在他的所有数据中最后提交按钮再次进行双重输入。

如何解决这个问题?

3 个答案:

答案 0 :(得分:2)

verify.php中,生成一个随机数(随机散列通常适用于这种简单的目的)并将其添加为提交给verify_f.php的隐藏表单字段。然后在verify_f.php中,检查之前是否使用过nonce。

答案 1 :(得分:2)

您可以在这些表单之间生成随机哈希,并在提交表单后更改哈希值。每次用户提交表单时,都会检查来自表单的哈希值以及通过$ _SESSION存储在服务器中的内容。

答案 2 :(得分:-1)

将所有处理保存在同一个脚本中 你可以使用一些表格字段和条件运算符来控制程序流程,即:

if (isset($_POST['confitm'])) {
  include 'confirm.php';
}