0

acitvity.php

//Form start

   <form action=''>

   </form>

//Form End

//Get POST Values

<?php 

$_POST[''];

?>

//End

フォームが送信された後にページを更新すると、投稿されたすべての値が再送信されます。これは、すべての値がブラウザーにあるため、再送信されるためです。これの解決策を探していたとき、フォームと投稿操作が別のphpファイルで行われた場合、更新時に値を投稿する際に問題が発生しないという情報を得ました。

これは解決策ですか?しかし、今は単一のファイルで両方を行う必要があり、更新時に POST 値を再度送信しないでください..これを行う方法はありますか???

4

3 に答える 3

5

これを適切に実行できるように、PRG パターンを学習してください :)

http://en.wikipedia.org/wiki/Post/Redirect/Get

たとえば、ユーザー登録フォームを処理しようとしている場合、一連のPOSTed 値を取得してデータベースに保存します。

if(!empty($_POST)) {
   // validate and save to db

   // get last inserted user_id
}

それを行った後、以前に編集した値で同じページを返す代わりにPOST、新しいユーザーを、たとえばプロファイル ページにリダイレクトします (有効化要件が整っていないと仮定します)。

if(!empty($_POST)) {
   // validate and save to db

   // get last inserted user_id, say in $user_id

   header("Location: /users/$user_id");
}

そうすれば、ブラウザーがリダイレクトされ、ユーザーが更新を行うたびに、たとえば二重登録の問題が発生することはありません。

于 2012-05-31T05:36:51.280 に答える
3

データベースに保存したら、ページをリロードします。

if ($_POST) {
  // Save $_POST to database and other stuffs

  // Reload current page to discard $_POST
  header('Location: my_page.php');
}

これは PRG またはPost/Reload/Getと呼ばれます

于 2012-05-31T05:35:51.383 に答える
-1

unset($var)変数の設定を解除するために使用できます。ただし、問題はブラウザーにあると思います。それらのいくつかは賢くしようとし、ページを更新してもフォーム データを記憶します。URL バーで「go」または「enter」を押すと、「真の」更新が行われます。

于 2012-05-31T05:35:17.377 に答える