- ベストアンサー
phpでcookieをセットする方法
こんにちは。php4 apacheです。 簡単なログインのシステムを作りたいのですが、cookieのセットでつまづいてしまいました。 ちなみに前の質問は http://oshiete1.goo.ne.jp/kotaeru.php3?q=374947 です。 http headerは本文の前に送信しなければいけない事は教えていただいてわかったのですが、では具体的にどう記述したらいいのかまだわかりませんのでお力をいただければと思います。 やりたい事は、ページ1のテキストボックスに入力した値をページ1をサブミットさせてページ2にとばし、ページ2で、フォーム値があればその値をcookieにセット、なければそのままロード、ということをしたいのですが・・・。 ページ2の一番最初に、「もしフォーム値があればcookieをセット、 なければ(すでにcookieが存在するはずなので)そのままロード」 という処理を記述しているのですが、やはり前質問と同じエラーが出てしまいます。 cookieをセットする場合、if文すらその前に記述してはいけないのでしょうか・・・? とすると、こういう場合はどう記述してやるのが通常なのでしょうか? 何分仕事中なもので、返事が遅れることがあると思いますがアドバイスのほど宜しくお願い致します。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
ども、前回も答えたkusukusuです(^^; > やりたい事は、ページ1のテキストボックスに入力した値 > をページ1をサブミットさせてページ2にとばし、ページ2 > で、フォーム値があればその値をcookieにセット、なけ > ればそのままロード、ということをしたいのです > が・・・。 根本から変わって申し訳ないのですが、上記のようなことをしたいとき、なぜsession管理で処理しないのでしょう? php4はsessionがサポートされており、上記のようなことは簡単にできますよ。 まずphp4のバージョンは何でしょう? php4でも、php4.0.6とphp4.2.3では全然別物です。もっと詳しくバージョンを書いてください。 ここからはphp4.2.Xとして話します。 --- page1 --- print<<<EOF <form action="page2.php" method="post"> <input type=text name=str> <input type=submit value="send"> </form> EOF; ---以上--- --- page2 --- session_start(); $str=$_POST["str"]; //ここでsessionにstrがセットされます。 if($str!="") { session_regsiter("str"); }else { 処理 } とこんな感じになります。 > cookieをセットする場合、if文すらその前に記述してはいけないのでしょうか・・・? これは大間違いです(^^; もうちょっと詳しくhttpヘッダーについて勉強してください。 セットは【出力の以前】にしなくてはならない、と書かれていませんでしたか? 今回の場合はif分の内容は出力しませんよね? ですから、問題ありません。 もし仮に以下のように、if分の内容を表示するのであれば、問題です。 if($str!="") { //ここで表示を行う print "hoge"; setcookie(); } 以上参考になったでしょうか?
その他の回答 (1)
- FlossenEngel
- ベストアンサー率77% (132/170)
setcookie(を含む<?php ~ ?>)は"<html>"より前に記述して下さい。 ちなみに http://www.php.net/manual/ja/function.setcookie.php の英文コメントの中にサンプルになりそうなコードが示されています。
お礼
こんにちは。お礼が遅くなってしまって申し訳ありません。 なんとか先に進むことができました。 ありがとうございました。
お礼
こんにちは。 再度回答していただいたのにお礼がすごく遅くなってしまって申し訳ありません。 実は私、phpでセッション管理が出来るのを知らなかったのです。 kusukusuさんの回答を見て、調べてみました。 セッション管理をする事にしました。 クッキーのほうも、kusukusuさんに教えていただいたことをふまえて 色々調べて、なんとか扱えるようになりました。 感謝です。 また何かあった時にはよろしくお願い致します。 本当にどうもありがとうございました。