クッキーの扱い方

11月 30th, 2007 by admin

先日クッキーの扱い方にやられてしまった.

ドメイン(***.com)とサブドメイン(www.***.com)の両方でアクセスできるサイトで,何も意識せずにクッキーを管理していた.
そうしたら,ドメインとサブドメインで別々のクッキーファイルができてしまっていたのだ.
つまり,同じサイトに対して
①Cookie@***.com
②Cookie@www.***.com
の2つのクッキーを扱っていたことになる.
「http://***.com/」にアクセスしたときは①のクッキーを,
「http://www.***.com/」にアクセスしたときは②のクッキーが使用される.

これだけなら左程支障はなかったのだが,何故かおかしな動作をしていた.
「http://www.***.com/」にアクセスしたとき,
①のクッキーから情報を読み込み,
②のクッキーに更新された情報を書き込む.
もしくは,②のクッキーから情報を読み込み,
①のクッキーに更新された情報を書き込む.
詳細はよく分からないが,上記のような乱れた振る舞いをしていたようだ.

何故なんだろう・・・本当にわからない.
クッキーがそういう仕様でできているのか?

わからないが,すべてのサブドメインで有効なクッキーの設定方法が見つかったので,
その方法を用いて解決した.
setcookie(name, value, expire, “/”, “.***.com”);
これで「***.com」でも「www.***.com」でも共通に扱えるクッキーが設定できる.
ただし,事前に②のクッキーファイルを削除しておかないと,どうも振る舞いがおかしくなる.
やはりそういう仕様なのだろうか・・・?

クッキーは何かと扱いに気を配る必要があるから,あまり使いたくはないものだ.
ちなみに,「.***.com」は「”.” . $_SERVER[”SERVER_NAME”]」でも取得できるだろう.

Posted in PHP


(comments are closed).