php在yii2中的cookie用法

weixin_34116110發表於2017-03-09

設定cookie

$cookies = Yii::$app->response->cookies; 
if (! empty ( $uid )) {
    $uCookie=$cookies->add(new Cookie([
      'name' => 'uid_ck',
      'value' =>$uid,
      'expire' =>time()+ 30*24*3600,
      'domain'=>'.yiwang.com'//作用域寫字串
  ]));
}

清除cookie

 $cookie =  Yii::$app->response->cookies;
 $cookie->remove('uid_ck');
如果以上方法清除不了你的cookie還可以再加上下邊這個
$cookie =  Yii::$app->response->cookies;
$uCookie=$cookie->add(new Cookie([
  'name' => 'uid_ck',
  'value' =>'',
  'expire' =>time() - 30*24*3600,
  'domain'=>$domainCk
]));   

獲取cookie

//檢查是否存在該值,然後再獲取
$cookies = Yii::$app->request->cookies;
if ($cookies->has('uid_ck')) {
  $openid = $cookies->get('uid_ck');
}

yii2清除不了cookie值,存不了cookie值

公眾號設定的退出登入時不時不管用
yii2清除不了cookie值,存不了cookie值

1)發現同一個方法裡因為既有設定cookie的也有獲取cookie的地方,心想著上邊用了,下邊再覆蓋這個變數名$cookies就可以了,但是發現不行,

以下是我出錯原始碼

$cookies = Yii::$app->request->cookies;
$openid = $cookies->get('optKey_open');//可以取到值
$cookies =  Yii::$app->response->cookies;//改為$cookie
$cookies->add(new Cookie([//存不了//改為$cookie就可以
        'name' => 'isNewUser',
        'value' => 1,
        'expire' => $setTime + 10,
        'domain' => $domainCk
]));

原因:設定存取的cookie變數同名了
2)還有一個是退不出登入
以下是我的出錯原始碼

$cookie = Yii::$app->response->cookies;
$a= $cookie->add(new Cookie([
        'name' => 'uid_ck',
        'value' => '',
        'expire' => time() - 30 * 24 * 3600,
        'domain' => $domainCk
    ]));
 $a=$cookie->add(new Cookie([
        'name' => 'optKey_open',
        'value' => '',
        'expire' => time() - 30 * 24 * 3600,
        'domain' => $domainCk
    ]));

就是因為同名$a,可以去掉"$a=",或者寫成兩個不同的變數名,同名可能覆蓋或者像我這樣的兩個都設定不成功

相關文章