我无法让它工作。我试图阻止用户返回到表单确认页面,该页面在最终提交之前显示他的信息。
这是当前的工作流程:
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
,即确认页面上,显示他输入的所有数据,他所要做的就是再次点击最终提交按钮进行双重输入。
这怎么能解决?
您可以在这些表单之间生成一个随机哈希,并在提交表单后更改哈希。每次用户提交表单时,您都会通过$_SESSION检查来自表单的哈希以及存储在服务器中的任何内容。
在verify.php
中,生成一个nonce(随机哈希通常适用于这种简单的目的),并将其添加为提交给verify_f.php
的隐藏表单字段。然后在verify_f.php
中,检查nonce是否以前没有使用过。
将所有处理都放在同一个脚本中
您可以使用一些表单字段和条件运算符来控制程序流,即:
if (isset($_POST['confitm'])) {
include 'confirm.php';
}