• ベストアンサー

POSTした値を、別ページにもPOSTする

分かりにくいタイトルで申し訳ありません。。 今までJavaScriptでエラーチェックの制御を行っていましたが、 要望でJavaScriptを排除しなければならなくなり、途方に暮れています。 会員情報の新規登録のシステムを作成しています。 新規登録画面をA.php、登録内容確認画面をB.phpとします。 行いたいことは、A.phpの登録確認ボタンをクリックすると、そのページのテキストボックス、ラジオボタン等で入力された項目に不備がないかチェックし、問題がなかったらB.phpに遷移するという簡単な流れです。 当初は <form name="myFORM" method="post" action="B.php" onSubmit="Check_input(document.myFORM)"> と記述し、JavaScriptで項目のチェックをし、問題があればポップアップで警告、なかったらB.phpに遷移していました。 JavaScript撤去後は、 <form name="myFORM" method="post" action="A.php"> として、いったん自分にPOSTし、A.phpの中でエラーチェックをして問題があればエラーをラベル出力するという形をとりました。 ここでつまずいているのが、A.php自身にPOSTし、エラーがない場合、POSTした値を保持したままB.phpに遷移したいができない、ということです。 エラーがない場合 header("location:B.php"); で、B.phpに飛んでいるのですが、当然ながらPOSTした値はついてきてくれません。。 項目数が多く、ひとつひとつに変数で値をもたせてあげることも難しいです。 何か良い案がございましたら、ご教授ください。 よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • myaa_myu
  • ベストアンサー率52% (9/17)
回答No.2

以前私がした質問に関係しそうかな、と思いました。 よろしければご参考までに、ご参照ください。 http://oshiete1.goo.ne.jp/kotaeru.php3?q=2196862

noname#99462
質問者

補足

ご回答ありがとうございます。 SESSION関数を使うのですね! ただ、タイムアウトの部分が気になりますね^^; 全てhiddenというのも、勉強してみます><; 是非参考にさせていただきます。

その他の回答 (4)

回答No.5

この様な場合、セッションを使ってデータを仮保存というのが一般的かもしれません。 ですが、ページを変更しなくてはならない理由(例えば絶対に遷移の記録をサーバログに残さなければならない)でもあれば別ですが、別に飛ばす必要は無いんじゃないんですか? 一つのスクリプト内で A.phpのチェック B.phpの出力 をすればいいと思います。どちらかと言うとこちらの方が一般的ではないかと。 作るのが面倒なら、A.phpの最後に require ("B.php"); とすればそのままモジュールが入りますよね。

noname#99462
質問者

お礼

ご回答ありがとうございます。 そうですね、仰るとおりSESSIONが使いやすそうです。 一通りプログラムや設計書ができてしまっているので、ページを遷移するのは変更できないのです^^; 教わった方法は、今後の参考にさせて頂きます。 ありがとうございました^^

  • myaa_myu
  • ベストアンサー率52% (9/17)
回答No.4

…大変申し訳ありません。 No2&No3です。 質問者様のご質問の意図を勘違いしておりましたので、No.3ではちんぷんかんぷんな回答をしてしまいました。 無視してください;;申し訳ありません~;

noname#99462
質問者

お礼

再度のご回答ありがとうございます。 いえいえ、お気になさらないでください^^ こちらこそ、勉強させていただきありがたく思っております。 No2でmyaa_myu様からご教授いただいたSESSIONで、現在無事に動作確認できています。 (hiddenの方はまだ勉強できていないのですが^^;) SESSIONで問題ないと上から判断をもらえれば、これで確定したいと思います!

  • myaa_myu
  • ベストアンサー率52% (9/17)
回答No.3

さらに補足させてください。 私も以前、A.phpでの入力結果をB.phpでチェックという方法でプログラムを組みましたので、そのときの方法を書かせていただきますね。 流れとしては、 ■A.phpで入力項目に入力、submit(B.phpへ) ■B.phpで、入力項目の内容をセッションに保存 ■B.phpで入力値チェック、OKならそのまま画面表示、  NGの場合はセッションにエラー文字列を格納する。  (例:$_SESSION['err_msg'] = "<font color="red">・お名前が入力されていません。<br>・住所が入力されていません。</font>";) ■locationでA.phpへ ■A.phpのページ上部に、保存したエラーメッセージ$_SESSION['err']を表示。  セッションに保存した入力項目の内容をそれぞれのテキストフォーム等に再表示。 このような感じで作成しました。 ただ、私はあまりこの方法をおすすめできません。 というのは、エラーがあった場合に、この方法だとわざわざセッションにエラーを保存して受け渡しを行わなければなりません。 A.phpでチェックを済ませた場合には、エラー文字列をセッションに保存することなく、A.phpのページを再表示すればすむからです。 このときは会社の先輩にほとんど無理やり(苦)この方法で作らされましたが、できればA.phpでチェックというのが好ましいのではないでしょうか。 別ページに値を受け渡す方法としては、セッションかinputのhiddenあたりの使用がいいように思います。 ご参考程度になれば幸いです。

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

Aでチェックして値を保持したままBに遷移する意味がわかりません 普通に最初からBにとばしてBでチェックしてだめならエラー 画面、よければ次の処理画面を表示する分岐をいれればいい じゃないですか?

noname#99462
質問者

補足

ご回答ありがとうございます。 エラーがあった場合に「○○を入力してください」と警告して、(この警告は、A.php内にラベルで表示します)項目入力を続行させる必要があるので、エラー画面を別で設けられません…。 さらに、画面を切り替えることなく、A.php内でチェックを行いたいため、質問させていただきました。 申し訳ありませんが、ご提示いただいた案で簡単な流れを教えていただければ…と思うのですが><;