人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

php-4.3.7でsetcookie関数が使えません。どういう原因が考えられるでしょうか?
下ソースで$_COOKIE[’userid’]に値が入りません。
よろしくお願いいたします。

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

●質問者: kunitz
●カテゴリ:コンピュータ
✍キーワード:24 cookie PHP print RYO
○ 状態 :終了
└ 回答数 : 6/6件

▽最新の回答へ

1 ● ozonepapa
●15ポイント

http://www.abc.com/

ABC.com

URLはダミーです。

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

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

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

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

再読み込みすると、

cookie:userid=ryo

と表示されました。

<?php

$userid = ”ryo”;

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

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

”;

?>

◎質問者からの返答

ありがとうございます!

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

実際は1byte文字です。


2 ● tkmisawa
●15ポイント

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に代入してあげればよいと思います。

◎質問者からの返答

ありがとうございます!


3 ● iloveny
●15ポイント

http://www.google.co.jp/

Google

URL はダミーです。

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

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

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

◎質問者からの返答

ありがとうございます!

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

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

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


4 ● tkmisawa
●15ポイント

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

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

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

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

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

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

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

◎質問者からの返答

ありがとうございます!

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


5 ● yutaochi
●15ポイント

http://php.s3.to/man/function.setcookie.html

setcookie

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()と全てのコードを書くのがベストです.

◎質問者からの返答

ありがとうございます!


1-5件表示/6件
4.前の5件|次5件6.
関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ