讀取 Cookies
當(dāng)前請(qǐng)求的cookie信息可通過(guò)如下代碼獲壬胝鳌:
// 從 "request" 組件中獲取 cookie 集合(yii\web\CookieCollection)$cookies= Yii::$app->request->cookies;// 獲取名為 "language" cookie 的值,如果不存在,返回默認(rèn)值 "en"$language=$cookies->getValue('language','en');// 另一種方式獲取名為 "language" cookie 的值if(($cookie=$cookies->get('language')) !==null) {$language=$cookie->value;}// 可將 $cookies 當(dāng)作數(shù)組使用if(isset($cookies['language'])) {$language=$cookies['language']->value;}// 判斷是否存在名為"language" 的 cookieif($cookies->has('language')) ...if(isset($cookies['language'])) ...
發(fā)送 Cookies
可使用如下代碼發(fā)送 cookie 到終端用戶:
// 從 "response" 組件中獲取 cookie 集合(yii\web\CookieCollection)$cookies= Yii::$app->response->cookies;// 在要發(fā)送的響應(yīng)中添加一個(gè)新的 cookie$cookies->add(new\yii\web\Cookie(['name'=>'language','value'=>'zh-CN',]));// 刪除一個(gè) cookie$cookies->remove('language');// 等同于以下刪除代碼unset($cookies['language']);
除了上述例子定義的?name?和?value?屬性?yii\web\Cookie?類也定義了其他屬性來(lái)實(shí)現(xiàn)cookie的各種信息杂数,如domain疫铜,expire?可配置這些屬性到 cookie 中并添加到響應(yīng)的 cookie 集合中彻磁。
注意:為安全起見?yii\web\Cookie::$httpOnly?被設(shè)置為 true留凭, 這可減少客戶端腳本訪問受保護(hù) cookie(如果瀏覽器支持)的風(fēng)險(xiǎn), 更多詳情可閱讀?httpOnly wiki article升略。