YII读取和设置Cookie

读取 Cookies

当前请求的cookie信息可通过如下代码获取:

// 从 "request" 组件中获取 cookie 集合(yii\web\CookieCollection)$cookies= Yii::$app->request->cookies;// 获取名为 "language" cookie 的值,如果不存在,返回默认值 "en"$language=$cookies->getValue('language','en');// 另一种方式获取名为 "language" cookie 的值if(($cookie=$cookies->get('language')) !==null) {$language=$cookie->value;}// 可将 $cookies 当作数组使用if(isset($cookies['language'])) {$language=$cookies['language']->value;}// 判断是否存在名为"language" 的 cookieif($cookies->has('language')) ...if(isset($cookies['language'])) ...

发送 Cookies

可使用如下代码发送 cookie 到终端用户:

// 从 "response" 组件中获取 cookie 集合(yii\web\CookieCollection)$cookies= Yii::$app->response->cookies;// 在要发送的响应中添加一个新的 cookie$cookies->add(new\yii\web\Cookie(['name'=>'language','value'=>'zh-CN',]));// 删除一个 cookie$cookies->remove('language');// 等同于以下删除代码unset($cookies['language']);

除了上述例子定义的 name 和 value 属性 yii\web\Cookie 类也定义了其他属性来实现cookie的各种信息,如domain,expire 可配置这些属性到 cookie 中并添加到响应的 cookie 集合中。

注意:为安全起见 yii\web\Cookie::$httpOnly 被设置为 true, 这可减少客户端脚本访问受保护 cookie(如果浏览器支持)的风险, 更多详情可阅读 httpOnly wiki article。

你可能感兴趣的:(YII读取和设置Cookie)