php-4.3.7でsetcookie関数が使えません。どういう原因が考えられるでしょうか?

下ソースで$_COOKIE[’userid’]に値が入りません。
よろしくお願いいたします。

<?
$userid = ”ryo”;
$ret1 = setcookie (”userid”, $userid, time()+60*60*24);
print ”cookie:userid=”.$_COOKIE[’userid’].”
”;
?>

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:
  • 終了:--
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答6件)

id:ozonepapa No.1

回答回数288ベストアンサー獲得回数0

ポイント15pt

URLはダミーです。

質問のコードをそのまま実行してみましたが、実行できませんでした。

”と’が2バイト文字になっていないでしょうか?

”と’を1バイト文字に変更しました。

これだと、実行できます。

再読み込みすると、

cookie:userid=ryo

と表示されました。

<?php

$userid = ”ryo”;

$ret1 = setcookie (”userid”, $userid, time()+60*60*24);

print ”cookie:userid=”.$_COOKIE[’userid’].”

”;

?>

id:kunitz

ありがとうございます!

”が2バイト文字になるのははてなの仕様です。

実際は1byte文字です。

2004/07/20 00:22:57
id:tkmisawa No.2

回答回数3ベストアンサー獲得回数0

ポイント15pt

http://www.scollabo.com/banban/php/ref/ref_setcookie.html

setcookie()関数/PHP関数リファレンス

$_COOKIE変数は、setcookie直後には保存されていません。

まず、setcookieで、COOKIEヘッダがついた状態でクライアントに送信されて、ブラウザにクッキーとして保存されます。

次のリクエスト時(次のページを呼び出したとき)にサーバにCOOKIEが送信され、そのページがPHPスクリプトであれば、$_COOKIEがセットされます。

したがって、もう一度同じスクリプトを呼び出せば$_COOKIE[’userid’]に値が入っているのではないでしょうか。

http://www.sakura-pc.jp/php/cookie.shtml

Cookieの読み書き 【PHP講座】

どうしても上記状態で$_COOKIEを使用したい場合は、別途$_COOKIEに代入してあげればよいと思います。

id:kunitz

ありがとうございます!

2004/07/20 00:23:23
id:iloveny No.3

回答回数77ベストアンサー獲得回数0

ポイント15pt

URL はダミーです。

$_COOKIE はそのPHPが呼び出された時の値が入ります。

つまり、setcookie でクッキーに挿入しても、$_COOKIE には含まれていません。

ただし、実際にはクッキーに入ってます(リロードすれば表示されるはずです)

id:kunitz

ありがとうございます!

うーん、リロードしても駄目なんです。

windowsのcookieフォルダを見ても何も加わっていません。

LAN上のウェブサーバでやってるのとか関係あるのでしょうか?

2004/07/20 00:24:29
id:tkmisawa No.4

回答回数3ベストアンサー獲得回数0

ポイント15pt

http://tohoho.wakusei.ne.jp/wwwcook.htm#CookieConfig

そのファイルは現在ありません

確認しているブラウザの設定は大丈夫ですか?

IEであれば、「インターネットオプション」-「プライバシー」タブの「詳細設定」で、「ダイアログを表示する」としておくとCOOKIEが設定されているかどうかブラウザで確認することができます

http://www.sekiryu.co.jp/cookie.htm

買い物カゴが利用できない場合にお読み下さい。

もし、Norton Internet Security等を使っている場合は、こちらでCOOKIEが遮断されているかもしれません。ご確認ください。

id:kunitz

ありがとうございます!

同じソースを他のウェブサーバに置いたときはクッキーが効いています・・・

2004/07/20 20:47:24
id:yutaochi No.5

回答回数1ベストアンサー獲得回数0

ポイント15pt

1.まずサーバのphp.ini(PHP実行環境設定ファイル)を書き換える権限はありますか?もしあるのであれば,php.iniのoutput_bufferingがonになっているかどうかを確認してください.phpinfo()でもしらべることが出来ます.

また,サーバの設定によれば.htaccessで値を設定できるかもしれません.調べてみてください.

2.ファイルの文字コードがUTF-8になっていませんか? Unicodeが持つヘッダ(BOMコード)が強制的にhtml出力がsetcookieの前に入ってしまうことがあります.できれば他の文字コードにしておくのが無難かと思います.

もし.htaccessで設定を変えることが出来なければ,コードを書き込んだHTMLorPHPファイルの先頭に<? ob_start() ?>を書き込んでください.これによってoutput bufferingを行うことが出来ます.先頭に<? ob_start() ?>があるならば,setcookie関数は任意の場所で実行しても大丈夫です.

より綺麗に書こうとするなら,

<?php

setcookie();

...

?>

と言うようにファイルの先頭にsetcookie()と全てのコードを書くのがベストです.

id:kunitz

ありがとうございます!

2004/07/20 21:48:07
id:iloveny No.6

回答回数77ベストアンサー獲得回数0

ポイント15pt

URLはダミーです。

ドメインとパスを省略せずに書いたらどうでしょうか?

以前、それでうまく行った事があります。

setcookie の前に何かを出力しているとクッキーの書き込みが行われません。

先頭の <?php の前に何かがあったりすると、それだけでダメです。

また、ブラウザの設定で、クッキーの受け入れをその都度確認するようにしておくと、

実際に書き込もうとしているのか、どのような値を書き込もうとしているのかをチェック

することができます。

id:kunitz

ありがとうございます!

2004/07/21 17:40:12

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません