设置Cookie
PHP

setcookie("name", "Larry", time()+3600);
Yii2

$cookies = Yii::$app->response->cookies;
 
$cookies->add(new \yii\web\Cookie([
    'name' => 'name',
    'value' => 'Larry',
    'expire'=>time()+3600
]));

创建名为"name"的cookie,赋值为"Larry",并且规定该cookie一小时后失效

expire这是一个UNIX时间戳,如果设置为0,或省略,该Cookie将在浏览器关闭时消失

获取Cookie
PHP

$name=$_COOKIE["user"]
Yii2

$cookies = Yii::$app->request->cookies;//注意此处是request
$language = $cookies->get('user', 'defaultName');//设置默认值

检查Cookie
PHP

if(isset($_COOKIE["user"])){ }
Yii2

$cookies = Yii::$app->request->cookies;
 
if (isset($cookies['user'])){ }
if ($cookies->has('user')){ }
if (isset($cookies['user'])){ }

删除Cookie
PHP

setcookie("user", "", time()-3600);//把失效日期设置为过去1小时
unset($_COOKIE['user']);
###Yii2
$cookies = Yii::$app->request->cookies;
 
$cookies->remove('user');

常见问题

A.Cookie的key不能含“.” 符号,会被解析成“_”,导致具有以上符号的key获取不到Cookie的bug

B.区分Yii2中 Yii::$app->request->cookies 和 Yii::$app->response->cookies 不仔细容易直接复制粘贴了。

1.如果把第一个用来设置Cookie,会报错:`The cookie collection is read only`

2.如果把第二个用来获取Cookie,程序正常执行未发生异常,但会获取不到Cookie,不容易察觉。。。

 

相关文章:

  • 2022-12-23
  • 2022-01-09
  • 2022-12-23
  • 2021-09-03
  • 2022-12-23
  • 2019-01-07
  • 2021-10-19
  • 2021-10-29
猜你喜欢
  • 2022-01-23
  • 2022-12-23
  • 2022-01-04
  • 2022-12-23
  • 2022-12-23
  • 2021-11-26
  • 2021-09-18
相关资源
相似解决方案