dreaminto
(Dreaminto)
July 23, 2009, 5:29am
1
以下的代码在1.0.6版本下可以正常得到数据,但在1.0.7下就得不到数据了?是不是1.0.7下做了代码修改,调用cookie的方式改变了吗?
public function actionSetCookie()
{
$cookie = new CHttpCookie('123','3300');
$cookie->expire = time()+60*60*24*180;
Yii::app()->request->cookies['123']=$cookie;
var_dump($_COOKIE);
}
public function actionGetCookie()
{
$cookie = Yii::app()->request->cookies['123'];
var_dump($_COOKIE);
}
版本1.0.6下:
array(4) {
["ZDEDebuggerPresent"]=>
string(14) "php,phtml,php3"
["PHPSESSID"]=>
string(26) "lanuf1d522daivhsrq6931opj1"
["cartO"]=>
string(177) "a:2:{i:0;a:4:{s:3:"pid";s:2:"16";s:4:"pnum";s:1:"1";s:5:"price";i:1;s:10:"priceTotal";i:1;}i:1;a:4:{s:3:"pid";s:1:"3";s:4:"pnum";s:1:"1";s:5:"price";i:1;s:10:"priceTotal";i:1;}}"
[123]=>
string(4) "3300"
}
版本1.0.7下:
array(1) {
["ZDEDebuggerPresent"]=>
string(14) "php,phtml,php3"
}
dreaminto
(Dreaminto)
July 24, 2009, 1:12am
3
已经解决怎么处理cookie了,提供封装后的设置、获取、销毁cookie的三个方法(yii1.0.7版本),代码如下:
/**
* 写cookie
* 会对传入的cookie值进行序列化
*
* @param string $name cookie的名称
* @param string or array or object $value cookie值,默认值为空,即''
* @param int $expire cookie过期时间,默认值为0
* @param string $path 当前cookie的有效路径,默认值为"/"
* @param string $domain 当前cookie的有效域名,默认值为空
* @param boolean $secure 是否只充许以安全链接方式写cookie。true:是;false(默认值):否
* @param boolean $httpOnly 是否只充许通过http协议写cookie。true:是;false(默认值):否
* @return boolean true:成功;false:失败
*/
public function setCookie($name, $value='', $expire=0, $path='/', $domain='', $secure=false, $httpOnly=false)
{
$defaultResult = false;
if ( !isset($name) || strlen($name)==0 )
return $defaultResult;
$cookie = Yii::app()->request->getCookies();
$cookie[$name] = new CHttpCookie($name, serialize($value));
$cookie[$name]->expire = time()+$expire;
$cookie[$name]->path = $path;
$cookie[$name]->domain = $domain;
$cookie[$name]->secure = $secure;
$cookie[$name]->httpOnly = $httpOnly;
return true;
}
/**
* 销毁cookie
*
* @param string $name cookie的名称
* @return boolean 销毁成功,一直返回true
*/
public function delCookie($name)
{
$cookie = Yii::app()->request->getCookies();
if ( $cookie==null ) {
return true;
}
unset($cookie[$name]);
return true;
}
/**
* 读cookie
*
* @param string $name cookie的名称
* @return string cookie值
*/
public function getCookie($name)
{
$cookie = Yii::app()->request->getCookies();
if ( $cookie==null )
return null;
return unserialize($cookie[$name]->value);
}