2012-03-14 58 views
-1

我无法得到这个工作。我试图阻止用户回到最终提交之前显示其信息的表单确认页面。PHP:使用表单确认页面阻止提交/双重提交。我的工作流是否正确?

这是当前的工作流程:

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,确认页面,在那里他的所有数据,他进入显示所有他必须做的是再次击中最终提交按钮以进行双重输入。

这怎么解决?

+0

双重重定向中的点是什么,btw?无法直接将verify_f.php重定向到confirm.php? – 2012-03-14 07:37:32

回答

2

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

-1

将所有处理保留在同一个脚本中。
你可以使用某种形式的领域和条件操作符来控制程序流程,即:

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

verify.php,产生一个随机数(随机哈希通常很适合这个单纯善良的目的),并将其添加为提交到verify_f.php的隐藏表单字段。然后在verify_f.php中查看以前没有使用过的随机数。