webにおけるクッキーは実はお菓子ではない
Webサイトを見ていると、頻繁に聞かれます。
「Cookieを有効にしますか?」
お菓子をくれるわけではありません。
これは「あなたのブラウザに、追跡用のタグを貼り付けてもいいですか?」という許可を求めているのです。
Cookieとは、WebサーバーがあなたのスマホやPCの中に勝手に保存する「小さなメモ」のことです。
なぜそんなことをするのか。
それは、インターネットの基本ルール(HTTP)が、致命的な「記憶喪失」を患っているからです。
サーバーは「3歩歩くと忘れる」鳥頭
あなたがAmazonで買い物をしているシーンを想像してください。
- 商品一覧を見る
- 「カートに入れる」ボタンを押す
- 決済画面に行く
この一連の流れ、人間からすれば当たり前です。
しかし、Webサーバー(HTTP通信)にとっては奇跡に近い行為です。
なぜなら、サーバーは「1秒前のアクセス」すら覚えていないからです。
あなたが「カートに入れる」を押した瞬間、サーバーは処理をしますが、次の瞬間にあなたが決済画面に行くと、サーバーはこう言います。
「はじめまして。誰ですか?」
毎回です。ページを移動するたびに記憶がリセットされる。これがHTTPという通信における「ステートレス」という仕様です。
これでは買い物どころではありません。ページ移動のたびに「私はこういう者です…」とIDとパスワードを入れて自己紹介する必要があります。
解決策:客に「荷物」を持たせる
サーバー側で覚えられないなら、客(ブラウザ)に覚えさせればいい。
この逆転の発想で生まれたのがCookieです。
- あなたがログインする。
- サーバーは「こいつは田中だ」と確認する。
- サーバーは、あなたのブラウザに「私は田中です」と書かれたメモ(Cookie)を強引に渡す。
- 「次に来るときは、必ずそれを見せろよ」と命じる。
これ以降、あなたのブラウザは、そのサーバーにアクセスするたびに、頼まれてもいないのにCookieを提示します。
「へい、私は田中です」
サーバーはそれを見て、「おお、田中か。さっきぶりだな」と認識します。
これでようやく、ログイン状態が維持され、カートの中身が消えずに済むのです。
PHPでの貼り付け方:setcookie
PHPでこのタグを貼り付けるのは簡単です。setcookieという命令を使います。
// 名前, 値, 有効期限(現在時刻 + 1時間)
setcookie("user_name", "Tanaka", time() + 3600);Code language: JavaScript (javascript)
これで、閲覧者のブラウザに「user_nameはTanaka」という情報が保存されました。
有効期限を過ぎると、このタグは自動的に消滅します。
逆に、ブラウザから送られてきたタグの中身を読むには、$_COOKIEという専用の連想配列を使います。
echo $_COOKIE["user_name"]; // 結果:TanakaCode language: PHP (php)
サーバーは何も覚えていません。ただ、送られてきたタグを読んでいるだけです。
もしも初心者の方で、「連想配列の理解が怪しい…」という場合は、以下の記事をご覧ください。
恐怖の追跡:なぜ広告は追いかけてくるのか
Cookieは便利ですが、使い方によっては「ストーカー」になります。
あなたがスニーカーのサイトを見た後、全く関係ないニュースサイトに行っても、スニーカーの広告が表示された経験があるはずです。
あれは「サードパーティCookie」という手口です。
- スニーカーサイトを見る。
- そこに埋め込まれていた「広告配信業者」が、あなたの背中に「スニーカー好き」というタグ(Cookie)を貼る。
- あなたが別のニュースサイトに行く。
- そこにも同じ「広告配信業者」がいて、あなたの背中のタグを読み取る。
「おっ、こいつスニーカー探してるな。広告出したろ」
サイトを跨いで、あなたの行動履歴が共有される。
これが「追跡(トラッキング)」の正体です。
最近、iPhoneなどが「トラッキングを許可しますか?」と聞いてくるのは、この「背中の張り紙」を勝手に読ませないようにガードするためです。
まとめ:便利さとプライバシーの等価交換
Cookieは、Webを便利にするための必要悪です。
- メリット:ログイン維持、カート保存、設定の保存。
- デメリット:行動履歴の追跡、プライバシーの侵害。
PHPで開発をしていく上で、Cookieは避けて通れません。
しかし、そこには個人情報や重要なデータ(パスワードそのものなど)を保存してはいけません。
なぜなら、Cookieは「ユーザーが持っているメモ」だからです。
その気になれば、ユーザー自身が中身を書き換えることも、盗み見ることも可能です。
あくまで「会員証」や「整理券」レベルの情報を預ける場所。それがCookieの正しい使い方です。




コメント