クッキーの有効範囲

クッキーの有効範囲について↓
http://nyx.pu1.net/practice/cookie/cookie5.html

setcookie()関数その他の引数

これまでのページでsetcookie()関数の第1〜第3引数までは解説してきましたが、今回は残りの引数を一気に解説していきます。

とりあえずはおさらいで書式です。

書式
bool setcookie( string name [, string value [, int expire [, string path [, string domain [, bool secure ]]]]] )
第1引数のクッキー名、第2引数のクッキー値に関してはクッキー送受信で、第3引数の有効日時については有効期限付きクッキーで解説してますので詳しくはそちらでご確認ください。

有効パスの指定

さて、setcookie()関数、第4引数のパスですが、これはクッキーを有効としたいパスを指定します。デフォルト値はクッキーがセットされた時のカレントディレクトリ、つまり現在のディレクトリ(フォルダ)になるので、この値を省略した場合には現在のディレクトリ配下で有効になります。

ドメイン配下とディレクトリ配下

クッキーの有効範囲内をドメイン配下の全てのディレクトリで有効にする為には './' と指定します。

//ドメイン配下全てで有効
setcookie("name", "value", 0, "./");
このようにする事で自ドメイン配下の全てのディレクトリに有効なクッキーが作成できます。

特定のディレクトリ以下のみ有効のクッキーを設定するには '/フォルダ名' と指定します。

// dirnameディレクトリ内で有効
setcookie("name", "value", 0, "/dirname");
このように指定した場合には、dirname 配下の全てのディレクトリでクッキーが有効になります。例えばdirname/subdir などのようにサブディレクトリがあった場合でも subdir内、つまりサブディレクトリ内でもクッキーが有効になります。

ドメイン配下指定時の注意

クッキーの有効パスに './' と指定してドメイン配下全てで有効にする方法はとても便利なのですが、注意点が1つあります。共有サーバなどを使用している場合に良くあるのですが、ご自分のドメインがhttp://www.example.com/~yourID/ などのようにサーバから与えられるドメインが既にサブディレクトリになっている場合です。

こういったURLの場合、 './' と指定するとクッキーの有効パスは http://www.example.com/ 内の全てで有効になります。http://www.example.com/~yourID/内で有効になるわけではないので、同じサーバを使用している他のユーザのサイト上でもクッキーが有効になってしまうという事です。

そのような場合には './' と指定するのではなく、 '/~yourID' と指定するようにしましょう。