Yii中使用Cookie

kyle 2017-06-01 2182次浏览 0条评论 0 打赏作者 0 0

以下是Yii中使用Cookie的简单记载:

新创建的cookie会从本地传到服务器上,然后从服务器获取。

(1) cookie的发送(设置)

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

// 在要发送的响应中添加一个新的cookie
eg:往cookies中添加用户名和密码(即:创建名为username, password的cookie)
$cookies->add(new Cookie(['name'=>'username', 'value'=>$username,])); 
$cookies->add(new Cookie(['name'=>'password', 'value'=>$password,]));

//删除一个cookie 
$cookies->remove('username');
//相当于
unset($cookies['username']);

(2)cookie的获取

$cookies = Yii::$app->request->cookies;
// 获取名为 "username" cookie 的值,如果不存在,返回默认值"en"
$username = $cookies->getValue('username', 'en');

// 另一种方式获取名为 "username" cookie 的值
if (($cookie = $cookies->getValue('username')) !== null) {
    $username = $cookie->value;
}

// 判断是否存在名为username的cookie
if (isset($cookies['username'])) {
    $username= $cookies['username']->value;
    ...
}
if($cookies->has('username')){}


注意:
  $cookies = Yii::$app->response->cookies; //获取不到对应的cookie
  $cookies = Yii::$app->request->cookies; //能获取到对应的cookie,但是只读的

--> 要删除cookies里面的某一个cookie时,先必须要在request中判断是否存在某个cookie,然后在response中删除

$cookies = Yii::$app->request->cookies;
if ($cookies->has('user')) {
    Yii::$app->response->cookies->remove('user'); //删除cookie
    return $this->redirect('/user/login');
}
//如果cookie过期了,当点击logout时,系统跳到登陆界面
return $this->redirect('/user/login');
0

0 条评论

    没有找到数据。

发表评论

kyle
土豪

kyle

注册时间:2016-10-28
最后登录:6小时前
发布
带到手机上看