Yii2的Cookie主要是通过yii\web\Request
和yii\web\Response
进行操作
- 通过
\Yii::$app->response->getCookies()->add()
添加Cookie - 通过
\Yii::$app->request->cookies
读取Cookie.
① 添加Cookie
- //第一种方法
- $cookie = new \yii\web\Cookie();
- $cookie -> name = 'smister'; //cookie的名称
- $cookie -> expire = time() + 3600; //存活的时间
- $cookie -> httpOnly = true; //无法通过js读取cookie
- $cookie -> value = 'cookieValue'; //cookie的值
- \Yii::$app->response->getCookies()->add($cookie);
- //第二种方法
- $cookie = new \yii\web\Cookie([
- ‘name’ => ‘smister’,
- ‘expire’ => time() + 3600,
- ‘httpOnly ’ => true,
- ‘value’ => ‘cookieValue’
- ]);
- \Yii::$app->response->getCookies()->add($cookie);
② 读取Cookie
- $cookie = \Yii::$app->request->cookies;
- //返回一个\yii\web\Cookie对象
- $cookie->get(‘smister’);
- //直接返回Cookie的值
- $cookie->getValue(‘smister’); //$cookie[‘smister’] 其实这样也是可以读取的
- //判断一个Cookie是否存在
- $cookie->has(‘smister’);
- //读取Cookie的总数
- $cookie->count();//$cookie->getCount();跟count一样
③ 删除Cookie
- $cookie = Yii::$app->request->cookies->get(‘smister’);
- //移除一个Cookie对象
- \Yii::$app->response->getCookies()->remove($cookie);
- //移除所有Cookie,目前好像不太好使
- \Yii::$app->response->getCookies()->removeAll();
在这里给大家普及一个小知识,我们在进行第一次存取cookie的时候,会取不到cookie,必须是第二次刷新页面,才可以取到coo
kie,为什么呢?