クッキー(cookie)について

いろいろな用途でクッキー(COOKIE)を使ったりすると思いますが、じゃあクッキーってどのようになってるのでしょうか。

いろいろな実験

PHPでは

setcookie( string $name [, string $value [, int $expire [, string $path [, string $domain [, bool $secure [, bool $httponly ]]]]]] );
setcookie(【変数名】, 【変数値】, 【有効期限】, 【パス】,【ドメイン】,【SSLのみか】,【HTTPのみか】);

となっています。

$httponlyはPHP 5.2.0よりの追加です。
受け取るときは
$_COOKIE や $HTTP_COOKIE_VARS 配列です。
($_COOKIE は PHP 4.1.0 以降)
$_REQUEST 配列からもアクセスできます。

setcookie( "test","hoge",time() + 24*60*60,"/");

とした後に

setcookie( "test","",0);

としても、クッキーは削除されません。

setcookie( "test","a",0);

としても、ブラウザを閉じて、また開くと最初の"test"="hoge"が復活します。

これを消すのは

setcookie( "test","",time() - 3600,"/");

と、パスに『 / 』を指定しないと消したり上書きできません。

クッキーを消すのにtime()ではなくて、time() - 3600のようにするのは、比較される時間がクライアント(見てる人)のパソコンの時計だからです。
この時計がサーバーと同じとは限らないからです。

setcookie( "test","hoge",time() + 24*60*60,"/test");

として、設定したクッキーは

setcookie( "test","",time() - 3600,"/test/");

としても消せません。

setcookie( "test","",time() - 3600,"/test");

としないと消せません。

このときPHPは、クッキーの値にブランク("")を送っているわけではなく、値に『 deleted 』を送っています。

ひとつのパソコン内で、同じブラウザならクッキーを管理している場所(ファイルの保存先)が同じなので、クッキー情報の状態は同じになります。
ブラウザが違うと、クッキーを管理している場所は違うので、クッキー情報の状態は異なります。

関連記事

スポンサーリンク

Apacheから2GB以上のファイルをダウンロードしようとすると403エラーが出ます

ホームページ製作・web系アプリ系の製作案件募集中です。

上に戻る