一,操作
//设置 $cookie = new CHttpCookie(‘mycookie‘,‘this is my cookie‘); $cookie->expire = time()+60*60*24*30; //有限期30天 Yii::app()->request->cookies[‘mycookie‘]=$cookie; //获取 $cookie = Yii::app()->request->getCookies(); $test_cookie = $cookie[‘mycookie‘]->value; //删除 unset($cookie[‘mycookie‘]);
二,注册
CApplication::registerCoreComponents()
protected function registerCoreComponents()
{
$components=array(
‘request‘=>array(
‘class‘=>‘CHttpRequest‘,
),
);
$this->setComponents($components);
}三,源码
CHttpRequest::getCookies();
class CCookieCollection extends CMap{
protected function getCookies(){
$cookies=array();
if($this->_request->enableCookieValidation){
$sm=Yii::app()->getSecurityManager(); //获得安全管理器组件对象
//遍历cookie数据
foreach($_COOKIE as $name=>$value){
//是字符串 && 经过安全校验后等于原值则通过
if(is_string($value) && ($value=$sm->validateData($value))!==false)
$cookies[$name]=new CHttpCookie($name,@unserialize($value));
}
}else{
foreach($_COOKIE as $name=>$value)
$cookies[$name]=new CHttpCookie($name,$value);
}
return $cookies;
}
//...
} CMap
class CMap extends CComponent implements IteratorAggregate,ArrayAccess,Countable{
public function offsetGet($offset){
return $this->itemAt($offset);
}
public function offsetSet($offset,$item){
$this->add($offset,$item);
}
public function offsetUnset($offset){
$this->remove($offset);
}
//....
}原文:http://liyongjiang.blog.51cto.com/5800344/1358143