Yii2 cookie操作解析

yii的cookie操作被封装在 cookieCollection cookie集合里

通过集合里的操作有基本的增删查改操作(有序Cookie集合实现了arrayAccess接口,所以也能用数组)

 $cookies = Yii::$app->response->cookies;

        $cookies->add(new Cookie(['name'=>'123456','value'=>'sadasd']));
        $cookies->remove('1234');
        echo $cookies->getValue("123456");
        $cookie = Yii::$app->request->cookies;
//        $cookie->add(new Cookie(['name'=>'123456','value'=>'12345']));

需要注意的是 在request里实现的cookies是只读的方式,所以只能实现cookie的读操作,如果用其他操作会报错
他的载入代码

 public function getCookies()
    {
        if ($this->_cookies === null) {
            $this->_cookies = new CookieCollection($this->loadCookies(), [
                'readOnly' => true,//在这里写的只可读
            ]);
        }

        return $this->_cookies;
    }

另外值得注意的是我们在设置cookie时我们会执行一次加密操作。
假如你用js写cookie时我用$cookies->getValue("123456")读取时我读取不了。

因为我读取时我会按照我的加密原则进行解码

所以我们必须先执行

//在读取其他方式设置的cookie时先关闭我们的解码操作
Yii::$app->request->enableCookieValidation= false; 

//要记得关闭之后再开启
Yii::$app->request->enableCookieValidation= true; 

这个方法只在 request里有,response里是没有的,所以我们读取cookie时最好是用Request组件里的读取操作

猜你喜欢

转载自blog.csdn.net/qq_36172443/article/details/79959201
今日推荐