下ソースで$_COOKIE[’userid’]に値が入りません。
よろしくお願いいたします。
<?
$userid = ”ryo”;
$ret1 = setcookie (”userid”, $userid, time()+60*60*24);
print ”cookie:userid=”.$_COOKIE[’userid’].”
”;
?>
ABC.com
URLはダミーです。
質問のコードをそのまま実行してみましたが、実行できませんでした。
”と’が2バイト文字になっていないでしょうか?
”と’を1バイト文字に変更しました。
これだと、実行できます。
再読み込みすると、
cookie:userid=ryo
と表示されました。
<?php
$userid = ”ryo”;
$ret1 = setcookie (”userid”, $userid, time()+60*60*24);
print ”cookie:userid=”.$_COOKIE[’userid’].”
”;
?>
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に代入してあげればよいと思います。
ありがとうございます!
URL はダミーです。
$_COOKIE はそのPHPが呼び出された時の値が入ります。
つまり、setcookie でクッキーに挿入しても、$_COOKIE には含まれていません。
ただし、実際にはクッキーに入ってます(リロードすれば表示されるはずです)
ありがとうございます!
うーん、リロードしても駄目なんです。
windowsのcookieフォルダを見ても何も加わっていません。
LAN上のウェブサーバでやってるのとか関係あるのでしょうか?
http://tohoho.wakusei.ne.jp/wwwcook.htm#CookieConfig
そのファイルは現在ありません
確認しているブラウザの設定は大丈夫ですか?
IEであれば、「インターネットオプション」-「プライバシー」タブの「詳細設定」で、「ダイアログを表示する」としておくとCOOKIEが設定されているかどうかブラウザで確認することができます
http://www.sekiryu.co.jp/cookie.htm
買い物カゴが利用できない場合にお読み下さい。
もし、Norton Internet Security等を使っている場合は、こちらでCOOKIEが遮断されているかもしれません。ご確認ください。
ありがとうございます!
同じソースを他のウェブサーバに置いたときはクッキーが効いています・・・
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()と全てのコードを書くのがベストです.
ありがとうございます!
Yahoo! JAPAN
URLはダミーです。
ドメインとパスを省略せずに書いたらどうでしょうか?
以前、それでうまく行った事があります。
setcookie の前に何かを出力しているとクッキーの書き込みが行われません。
先頭の <?php の前に何かがあったりすると、それだけでダメです。
また、ブラウザの設定で、クッキーの受け入れをその都度確認するようにしておくと、
実際に書き込もうとしているのか、どのような値を書き込もうとしているのかをチェック
することができます。
ありがとうございます!
ありがとうございます!
”が2バイト文字になるのははてなの仕様です。
実際は1byte文字です。