2012-03-14 10 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に直接リダイレクトできませんか? –

答えて

2

これらのフォーム間でランダムなハッシュを生成し、フォームが送信されるとハッシュを変更できます。ユーザーがフォームを送信するたびに、フォームから来るハッシュと$ _SESSION経由でサーバーに格納されているものをチェックします。

-1

すべての処理を同じスクリプトに保存します。
あなたはすなわち、プログラムの流れを制御するためのいくつかのフォームフィールドと条件演算子を使用することができます、verify.php

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

をnonceを生成する(ランダムハッシュは、一般的な目的のこの単純な種類に適しています)としてそれを追加隠しフォームフィールドはverify_f.phpに送信されました。次にverify_f.phpで、前にnonceが使用されていないことを確認してください。

関連する問題