2012-03-14 78 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中查看以前沒有使用過的隨機數。