4

アイテム、数量、配送データなどを入力buy.phpするフォームがあります。

[送信] ボタンをクリックすると、にポストバックされbuy.php ($_SERVER['PHP_SELF'])、データ検証が行われます。

不足しているフィールドやエラーがある場合は、それらが強調表示されます。すべてが正しければ、$_POSTデータを$_SESSION変数に保存し、データheader('Location: check.php')を表示して、購入者が実際に購入する前にもう一度情報を確認できるようにします。

ここで、変更できるようにcheck.php[戻る] ボタンをクリックするbuy.phpと、ブラウザは POST データを再送信するかどうかを尋ねてきます。私はそれを避けようとしています。

PHP Multiform の検証に関する良いアドバイスや良い方法はありますか?

また、ユーザーが入力するページが n ページある場合、buy.php, buy2.php, ... buyn.phpcheck.php の前に同じアイデアが保持されるでしょうか?

4

2 に答える 2

4

セッション オブジェクトに保存した後、buy.php へのリダイレクトを行うことができます。これにより、サーバーが check.php にリダイレクトされます。つまり、ユーザーがクリックして戻ると、POST 要求ではなく GET 要求に戻ることになります。

于 2008-09-11T03:35:47.033 に答える
1

はい-私は上記に同意します。私はいつもredir最後の投稿から離れているので、戻るをクリックすると、エラーや再送信なしでそれらが返されます。また、複雑さを回避します。uはいつでもredirリンクページに?mまたは&m(つまり:)のタグを付けて、page.php?mこれをページの上部に置くことができます:(後で使用elseif

if (isset($_GET['m'])) {
  echo 'order placed.';
}
else {
  //...
}

すべてを1ページにまとめることもできます。送信ボタンsubmit1submit2次のように名前を付けるだけです:(送信に画像を使用する場合は、次のようになります$_POST['submit1_x']:)

if (isset($_POST[submit1]) {
  //validate + save session data from form1
  //display form 2
} else if(isset($_POST[submit2])) {
  //validate + save session data from form2
  //display form 3
} else {
  //display first form
  //<input type="submit" name="submit1" value="Continue">
}
于 2012-06-27T16:18:10.427 に答える