- ベストアンサー
$ENV{'HTTP_COOKIE'}は例えば
a=x;b=y;c=z; のようなフォーマットになっているのでしょうか? そうすると 自分のサイトが使っているクッキー名と 他のサイトが使っているクッキー名が偶然に一致していたとき あるブラウザに書かれている自分のサイトのクッキーが そのブラウザが他のサイトをアクセスしたときに上書きされてしまうのでしょうか? そのためにクッキー名をつけるときには偶然に一致しないように一定の長さ以上で特異な名前にしたほうがいいのでしょうか? クッキーについて基本的なことを教えてください
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
Cookieは、ドメインごとに設定され、パスで出力先が限定されます。パス指定されない場合、ドメインのルートパスとなります。 おっしゃる通り、同一ドメイン内で設定されたCookieが、全てHTTP_COOKIEで取得出来ます。(無論ドメインが違うと駄目。)もしも、Cookieにパス指定がある場合は、そのパス以下では該当のCookieが取得可能、それ以上の階層では取得不可能になります。(デフォルトだとルートパスなので、ドメイン内のどの階層でも取得可能です。) このような仕様の為、同一ドメイン・パス指定以下の階層で利用されるものでは、偶然一致してしまうと、他のクッキーを上書きしてしまう可能性はあります。他と重複しない用に、プログラム名等を含ませる形で名付けてあげると良いでしょう。また、共用サーバなどでは、パス指定で自分のホームを指定しておき、他の方のクッキーと混同されないようにする、等の配慮が必要になります。
その他の回答 (1)
- mcq
- ベストアンサー率48% (45/93)
Cookieを書き込む時にdomainパラメータとpathパラメータを設定するので、サイト・ページ毎に区別できます。
補足
ありがとうございます ということは $ENV{'HTTP_COOKIE'} には他のサイトが定義したクッキー名は出現しないと言うことですね? 勘違いかもしれないですが $ENV{'HTTP_COOKIE'} をみていると自分が定義していない変なクッキー名が出ていたのでおかしいなーと思ったのです 自分が定義したクッキー名がxで変なクッキー名がzとすると $ENV{'HTTP_COOKIE'} が x=a;z=b; となっていてzは定義した覚えが無いのです もしかしたらプロバイダ供給のCGIを1個使っているので それが定義したのかもしれませんね? そうすると他人のCGIを使うと自分のCGIに使ったクッキーとダブルかもしれませんね?
補足
ありがとうございます プロバイダと契約したときについてきたおまけの場所に HTMLやCGIを配置してます クッキーは名前と値だけを指定してます この場合 このプロバイダの他の人のエリヤのCGIに影響されるのでしょうか? そうするとディレクトリしてしない場合は他の人とダブらない名前にしなければならないのですね