LoginSignup
0
0

More than 3 years have passed since last update.

Cookieの削除の話

Posted at

はじめに

Cookieをプログラムで使用する時に、「Cookieの削除はいつから有効になるのか」ふと疑問思ったので、
軽く実験してみました。
おそらく、HTTPプロトコルについての基本がわかっている人はそんなの当たり前に知っているという人が多いでしょう笑

webアプリを開発時、Cookieの処理を実装しようとした時にどうするかを考えた時に、この処理の時はあるCookieを削除して、
その後の処理を分岐させたいというアイデアが出たのですが、それって多分できないよねって話になりました。

多分っていうのが気持ち悪かったので、PHPで試しに実験してみました。

環境

環境

PHP7
CakePHP3

実験

  1. ブラウザに Cookie名: name Cookie値: bellcrud を登録する
  2. プログラムで Cookie[name]をログ出力
  3. プログラムで Cookie[name]を削除
  4. プログラムで Cookie[name]をログ出力
CookiesController.php
public function index()
    {
        $this->log('----クッキー取得');
        $this->log($this->Cookie->read('name')); // CakePHPの用意しているライブラリで取得
        $this->log($_COOKIE); // 素のPHPので取得

        $this->log('----クッキー削除');
        $this->Cookie->delete('name'); // CakePHPの用意しているライブラリで削除
        $this->log($this->Cookie->read('name'));// CakePHPの用意しているライブラリで取得
        $this->log($_COOKIE); // 素のPHPので取得
    }
error.log
2020-05-23 10:26:06 Warning: DebugKit not enabled. You need to either install pdo_sqlite, or define the "debug_kit" connection name.
2020-05-23 10:26:06 Error: ----クッキー取得
2020-05-23 10:26:06 Error: bellcrud // 取得できたことを確認
2020-05-23 10:26:06 Error: Array
(
    [Phpstorm-8ff1daf1] => ************************************
    [remember_web_*********] => ************************************
    [csrfToken] => ************************************
    [name] => bellcrud
)

2020-05-23 10:26:06 Error: ----クッキー削除
2020-05-23 10:26:06 Error:        // 取得できていない!!!
2020-05-23 10:26:06 Error: Array
(

    [Phpstorm-8ff1daf1] => ************************************
    [remember_web_*********] => ************************************
    [csrfToken] => ************************************
    [name] => bellcrud // 削除されていない!!!
)

・ CakePHPの用意しているCookieComponentでは削除された扱い
・ PHPの用意している$_COOKIEでは削除されていない

結論

「正確にいうと削除されません。」
CakePHPの用意しているライブラリでは削除扱いになっていますが、実際のところは素のPHPでのCOOKIE取得でわかる通り削除されていません
COOKIEはを削除するというのは、有効期限切れにするという処理をクライアント側で完了して削除されたということ。
サーバー上で削除するというのが、そもそもの考えが意味わからないということですね。

ただ、フレームワーク側で用意されたライブラリを使うと、削除された扱いとなり取得できなくなるようにすることができる。

所感

cookieを扱う時は一貫した扱い方をしないと、わけわからなくなるため、気をつけないといけないことがわかりました。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0