• ベストアンサー

formの複数action指定について

お世話になっております。 PHPにて、 Aページでフォーム情報を取得した後、 B→Cという流れだけではなく、 A→B→C A→D というページを作りたい場合、 Aにてformのactionを複数指定するという事は 出来るのでしょうか? Aの情報を保持したまま次ページにも渡したいので。

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

  • ベストアンサー
  • shige1127
  • ベストアンサー率58% (7/12)
回答No.4

察するに、Aページの手前で渡すinput nameをformNameと仮定して、 Aで取得した$_POST['formNme']を他ページ(BCD)でも参照したい。 という事でよろしいでしょうか? だとしたら、A.phpの初期処理で session_start(); session_register(pageData); $_SESSION['pageData'] = $_POST['formname']; とすれば、各PHP上で、 session_start(); echo $_SESSION['pageData']; で参照できると思います。

kaiu
質問者

お礼

ご回答ありがとうございます。 セッションを使う事と要件を変更した事で うまく行きました。 一つ不思議に思ったのですが、 session_registerを指定しなくても セッション変数で値は取得できますが、 session_registerを指定する場合は acrion指定していない場合に 各PHP上で、echo $_SESSION['pageData']; を参照できるという意味でよろしいのでしょうか? お暇があればご返事頂けると有り難く思います。 ありがとうございました。

その他の回答 (4)

  • shige1127
  • ベストアンサー率58% (7/12)
回答No.5

#4です。echoはあくまでもサンプルで不要です(^^; しかし、session_registerについては、PHPのバージョンをご確認の上、 register_globals等についても調べられた方が後々良いかとは思います。(php.ini周り)

参考URL:
http://php.s3.to/man/ref.session.html
kaiu
質問者

お礼

session_register指定でも 色々試してみた所、一部文字化けが 直ってしまいました。 PHPは簡単そうに見えて奥が深いものですね。 再度のご回答ありがとうございました。

  • ebiku
  • ベストアンサー率26% (41/157)
回答No.3

セッションを使えば出来ると思いますが。 見当違いでしょうか?

kaiu
質問者

お礼

ご回答ありがとうございます。 ご回答頂きました通り、 セッション使いすぎだと思う程使いました。 セキュリティや排他処理などで問題が無いかどうか不安です。 これから色々テストしていきたいと思います。 >見当違いでしょうか? とんでも無いです。 ありがとうございました。

  • moon_night
  • ベストアンサー率32% (598/1831)
回答No.2

データの受け渡し先はひとつです。 A→B ただし、Bで受け取ったデータによって出力を変えることができますので、あなたが考えている動作をさせることは可能です。

kaiu
質問者

お礼

ご回答ありがとうございます。 要件的には A→A A→B→C A→D の処理を想定していましたが、 途中でソースと脳みそが訳分からなくなってしまいましたので A→A・B→C A→A・D とまとめました。 仰る通り可能だと信じて頑張りました。 ありがとうございました。

回答No.1

はじめまして、こんにちは。 複数ACTIONを指定することは、できません。 基本はFORMを分けることです。 それができない場合、 たとえば、押したボタンによって、 受け取ったCGIでどのボタンが押されたかを判定して、 リダイレクトする(または、表示内容を変える)等の 処理が筋が良い気がいたしまする。

kaiu
質問者

お礼

はじめまして。 ご回答ありがとうございます。 >押したボタンによって、 >受け取ったCGIでどのボタンが押されたかを判定して、 >リダイレクトする(または、表示内容を変える)等の >処理が筋が良い気がいたしまする。 こちらのご意見参考にさせて頂きました。 どちらにしろ複数ACTION指定でも(出来ませんが) FORMを分けるにしても処理が煩雑になりがちなので、 上記のやり方がスマートですね。 ありがとうございました。

kaiu
質問者

補足

皆様、色々ご回答ありがとうございます。 早速昼過ぎから色々試してみます。 またご報告いたします。