- ベストアンサー
form要素について
php初心者です。ログインページを勉強中なのですが、 form要素で受け取ったデータを別ページで取得したいんですがどうすればいいでしょうか? ★条件 1.最初の読み込み時は『ゲスト』と表示させたい 2.ログイン後は『名前』を表示させたい ●input.htmlファイル <form method="POST" action="output.php"> 名前<input type="text" name="name"> </form> ●output.phpファイル <?php if($_REQUEST["name"] != null){ echo($_REQUEST["name"]); }else{ echo("ゲスト"); }?> アドバイスお願いします。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
エラーは #4 の方がおっしゃっているように、 文字出力後にsetcookieされているからだと思います。 cookieはheaderにセットされるので、 何かを出力する前に、setやgetを完了していなければいけません。 あと、下のソースだと、 in.phpの時点では$_REQUEST["txt"]はnullなので そこでsetcookieしてもnullがセットされるだけです。 なので正しくセットされていたとしても、 out.phpでは何も表示されない(見えない)状態になると思います。 setcookie("MyCookie","abcde"); と書いて、自分のPCの中に Cookieファイルが出ているか確認しましょう。 セットされていれば、 out.phpに行った時に abcde と表示されると思いますよ。 #-- 混乱すると思うので成功後読んで欲しい ---- 上記の理由から、通常setcookieはout.phpの方で $_REQUEST["txt"]を取得した後に行うものですが、 ただ、$_COOKIE は、setcookie後すぐには効かなかったと記憶しています。 $_COOKIE は getcookie の結果だと思うので 1行目で setcookie しても、すでにgetcookieされた後らしく、 $_COOKIEの内容は更新されていない状態になるようです。
その他の回答 (4)
- yatokesa
- ベストアンサー率40% (201/496)
クッキーの出力は http://www.php.net/manual/ja/features.cookies.php にも書かれているとおり「ブラウザに何らかの出力を行う前にコー ルする必要」があります。
- the845t
- ベストアンサー率33% (246/743)
PHPの場合、クッキーの設定は比較的簡単です。 http://www.zuien.or.jp/develop/ja-manual/php3/function.setcookie.html が参考になると思います。 ただし、受け取る側がPHPでなく、HTMLになるのであれば、 与えることはPHPでできますが、HTMLでは取得ができません。 ですので受取るばあいはJavaScriptを使ってください。 http://tohoho.wakusei.ne.jp/wwwcook.htm が参考になると思います。 受取る時もPHPならもっと楽なんですけどね。
- yatokesa
- ベストアンサー率40% (201/496)
フォームを使ったログインならば #1さんの仰るとおりクッキーを使うのが最も楽でしょうね。 あとはセッションを使ってサーバー側にデータを保存(クッキーを併用、若しくはURLにセッションIDを埋め込み)するか、formによるログインにこだわらないのなら BASIC認証という方法があります。
お礼
参考URLありがとうございます。
- the845t
- ベストアンサー率33% (246/743)
クッキー使っちゃダメなの? あと、phpじゃなくて、htmlの方で使いたいってこと? この場合はクッキーしかないと思う。
補足
クッキーを使いたいと思うのですが、 phpのクッキーの操作方法がよくわかりません。 参考になるURLなどはご存知でしょうか?
補足
再度補足です。 setcookie()関数を用いて簡単な処理を行ってみましたが、思い通りの結果が処理できません。 ●送信側 in.phpファイル <form method="POST" action="out.php"> <?php $value = $_REQUEST["txt"]; setcookie("MyCookie","$value"); ?> <input type="text" size="30" name="txt" value=""> <input type="submit" name="submit" value="送信"> </form> ●受取側 out.phpファイル <?php echo $_COOKIE["MyCookie"]; ?> *内容* txt名テキストで入力された文字(データ)をsetcookie()関数にセットし送信し、out.phpでcookieのデータを取得し、表示させる。なおこの場合は無理やりクッキーを使用して結果を得ようとしていますが、あくまでクッキーの使用をテストするものであります。 これをブラウザで実行すると以下のエラーがでます。 Notice: Undefined index: txt in C:\Apache Group … クッキーのセット方法、取得方法がいまいちわからないので再度アドバイスをよろしくお願いいたします。