- ベストアンサー
入力した文字を次のページへ渡す事で、いまいち分からない事があります。
初めまして。PHPを勉強しながら、色々作っている者です。 質問等を調べ検索していますが、 よく分からない所があります。 今、a.htmlで入力した言葉をb.phpへ渡し、 更にc.phpへ渡すものを作っています。 a.htmlからb.phpに渡す事は出来ますが、 同じ言葉をc.phpには渡せなく。 a.htmlからb.phpまでは渡せます。 何方様か、 どの様に書けば宜しいのかご教授頂けませんでしょうか?
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
#1です。 セッションを使う場合の注意点 ・どんな出力よりも先に session_start() を行ってください。 ・不要になったデータは不要になった時点で破棄する ことが望ましいと個人的に思っています。 セッションを使うとデータはサーバにバイナリデータとして保存されます。 そしてクライアント側では該当するバイナリデータを 取得するためのIDをクッキーに保存されます。 (携帯ではクッキーが使えないのでURLにGETパラメータとして付加したりします) 下記に一例ですが、サンプルを載せます。 [b.php] <?php // セッションの開始(どんな出力よりも先に行う) session_start(); ?> <html><head><title>b.php</title></head><body> <?php $_SESSION['name01'] = $_POST['name01']; $_SESSION['name02'] = $_POST['name02']; print ("入力データです<br />"); print ("氏名:{$_SESSION['name01']}"."{$_SESSION['name02']}<br />"); $_SESSION['name03'] = $_POST['name03']; print ("映画:{$_SESSION['name03']}<br />"); ?> <br> <?php print ("{$_SESSION['name01']}{$_SESSION['name02']}さん:"); ?> 初めまして。<br> <?php print ("{$_SESSION['name03']}:"); ?> 良い映画ですよね。<br /><br /> <a href="c.php" target="_self">c.phpへ</a> </body></html> [c.php] <?php // セッションの開始(どんな出力よりも先に行う) session_start(); ?> <html><head><title>c.php</title></head><body> <?php print ("{$_SESSION['name01']}{$_SESSION['name02']}さん:私も映画好きです。<br />"); print ("{$_SESSION['name03']}:結構見入りますよね。<br />"); ?> <?php /******** * データが不要になった段階でデータを破棄します。 * ブラウザを閉じるまでもう使わない場合など */ // 1つのデータだけ破棄する場合 unset($_SESSION['name01']); // セッション全てを破棄する場合 //session_destroy(); ?> <br /> <a href="?<?=time()?>" target="_self">リロード</a> </body></html>
その他の回答 (2)
- yambejp
- ベストアンサー率51% (3827/7415)
formのhiddenをつかって受け渡してください
お礼
yambejpさん、御回答有り難う御座います。 違う方法もあることが分かりました。 一応、別途の事として試してみようと思います。
- papillon68
- ベストアンサー率61% (42/68)
megumugiさん、こんにちは。 a.htmlからb.phpへの値渡しはできるとのことですが、 具体的にはどのように行っているのでしょうか。 複数ページにまたがって値を渡す場合、 ・URLパラメータとしてGETで渡す(URL?hensu1=value1&・・・hensun=valuen&) ・SESSIONの使用 ・COOKIEの使用 ・フォームのhidden項目に入れておき、サブミットする。 など他にもいくつか方法があります。 データの内容(重要度)によってもどの方法がよいかが 変わってくると思います。
お礼
papillon68さん、御回答有り難う御座います。 補足にて、私が行っている事を書き込んでみましたので、 改めて、 どの様にすれば宜しいのか教えて頂けたらなと思っております。
補足
a.htmlからb.phpまで一応渡す事ができ、サンプルとしては、 [a.html] <html><head><title>a.html</title></head><body> 氏名と好きな映画を入力して下さい。 <form action="b.php" method="post"> <table border="1"> <tr><td>氏</td> <td><input type="text" name="name01"></td></tr> <tr><td>名</td> <td><input type="text" name="name02"></td></tr> <tr><td>映画</td> <td><input type="text" name="name03"></td> <tr><td colspan="2" align="center"> <input type="submit" value="入力"></td></tr> </table></body></html> [b.php] <html><head><title>b.php</title></head><body> <?php $name01 = $_POST['name01']; $name02 = $_POST['name02']; print ("入力データです<br />"); print ("氏名:$name01"."$name02<br />"); $name03 = $_POST['name03']; print ("映画:$name03<br />"); ?> <br> <?php print ("$name01"."$name02"."さん:"); ?> 初めまして。<br> <?php print ("$name03".":"); ?> 良い映画ですよね。 </body></html> としています。 同じ言葉を更にc.phpに渡すには、どう記述し組むのかが分からなくて。 [c.php] ○○さん:私も映画好きです。 **:結構見入りますよね。 の様な感じにサンプルとして出来たらなと思っています。 session_strat(); $_SESSION['data'] = 等を用いるのかと思うのですが、記述構成がよく分からないもので。 長くなり申し訳ありません。 どの様にすれば宜しいのか改めてご教授宜しくお願い致します。
お礼
papillon68さん、再び有り難う御座います。 とても分かりやすい記述、有り難う御座いました。 試した所、やりたいと思っていた通りになりました。 どうやら、私はセッションの記述が上手く出来ず、 処理が行えなかった事に気付きました。 大変勉強になりました。有り難う御座いました。