• ベストアンサー

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("ゲスト"); }?> アドバイスお願いします。

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

  • ベストアンサー
  • duckling
  • ベストアンサー率47% (88/185)
回答No.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)
回答No.4

クッキーの出力は http://www.php.net/manual/ja/features.cookies.php にも書かれているとおり「ブラウザに何らかの出力を行う前にコー ルする必要」があります。

  • the845t
  • ベストアンサー率33% (246/743)
回答No.3

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ならもっと楽なんですけどね。

u-mesh12
質問者

補足

再度補足です。 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 … クッキーのセット方法、取得方法がいまいちわからないので再度アドバイスをよろしくお願いいたします。

  • yatokesa
  • ベストアンサー率40% (201/496)
回答No.2

フォームを使ったログインならば #1さんの仰るとおりクッキーを使うのが最も楽でしょうね。 あとはセッションを使ってサーバー側にデータを保存(クッキーを併用、若しくはURLにセッションIDを埋め込み)するか、formによるログインにこだわらないのなら BASIC認証という方法があります。

参考URL:
http://www.hotwired.co.jp/webmonkey/2001/49/index2a.html
u-mesh12
質問者

お礼

参考URLありがとうございます。

  • the845t
  • ベストアンサー率33% (246/743)
回答No.1

クッキー使っちゃダメなの? あと、phpじゃなくて、htmlの方で使いたいってこと? この場合はクッキーしかないと思う。

u-mesh12
質問者

補足

クッキーを使いたいと思うのですが、 phpのクッキーの操作方法がよくわかりません。 参考になるURLなどはご存知でしょうか?

関連するQ&A