Difference between #6 and #11 of
Cookie management in Yii

Revision #11 has been created by felipe_Brz on Jul 31, 2012, 4:50:50 PM with the memo:

changed 'cookie' to 'cookies' .. apparent typo
« previous (#6) next (#12) »

Changes

Title unchanged

Cookie management in Yii

Category unchanged

How-tos

Yii version unchanged

Tags changed

cookies, cookie, chttpcookie, ccookiecollection, safe reading

Content changed

[...]
```php
$cookie = Yii::app()->request->cookies['cookie_name']->value;
```

S
ee also "Safe reading" in the next chapter.
 
 
### Writing a cookie
 
 
To write a cookie value, us
ince Yii 1.1.11 you can also access the cookie value directly without accessing the value property first.
 
 
 
```php 
$value = (string)Yii::app()->request->cookies['cookie_name'];
 
```
 
**Note**: You should only use this if you are sure the cookie exists.
 
Also this may not work on PHP prior to 5.2 (See [PHP.net -> __toString()](http://www.php.net/manual/en/language.oop5.magic.php#object.tostring "PHP.net -> __toString()")).
 
 
See also "Safe reading" in the next chapter.
 
 
### Writing a cookie
 
 
There are multiple ways to write a cookie:
 
 
Since Yii 1.1.11 you don't have to specify the name of the cookie twice.
 
 
```php 
Yii::app()->request->cookies->add(new CHttpCookie('cookie_name', $value));
 
```
 
**Note**: Th
e f`ollowing code:
 
d` variant is still valid.
 
Notice, that you have to specify the name twice, if you want to use this:
```php Yii::app()->request->cookies['cookie_name'] = new CHttpCookie('cookie_name', $value); ```
 
Notice, that cookie name must be given twice! See also "Reload required" in the next chapter.
See also "Reload required" in the next chapter.
 
 
### Configure a cookie
 
 
Starting with Yii 1.1.11 you can configure an cookie upon creation.
 
 
```php 
$cookieCollection->add(new CHttpCookie('name', 'value', $options));
 
```
 
 
The option parameter is internally passed to the public method [CHttpCookie::configure()](http://www.yiiframework.com/doc/api/1.1/CHttpCookie#configure-detail "CHttpCookie::configure()") which accepts an array with the following keys:
 
 
- [domain](http://www.yiiframework.com/doc/api/1.1/CHttpCookie#domain-detail "domain")
 
- [expire](http://www.yiiframework.com/doc/api/1.1/CHttpCookie#expire-detail "expire")
 
- [secure](http://www.yiiframework.com/doc/api/1.1/CHttpCookie#secure-detail "secure")
 
- [path](http://www.yiiframework.com/doc/api/1.1/CHttpCookie#path-detail "path")
 
- [httpOnly](http://www.yiiframework.com/doc/api/1.1/CHttpCookie#httpOnly-detail "httpOnly")
 


### Deleting a cookie
[...]
### Cookies are objects

Cookies in Yii are read from [CHttpCookie](http://www.yiiframework.com/doc/api/1.1/CHttpCookie/ "") which is **an object**
, that's why you have add **->value** to your code (see example. Also it is important to know that
 
 
```php 
Yii::app()->request->cookies;
 
```
 
i
s ian previous chapter). If you omit that, you'll get warning or error saying that object of class CHttpCookie cannot be converted to a string.instance of [CCookieCollection](http://http://www.yiiframework.com/doc/api/1.1/CCookieCollection "CCookieCollection") which extends [CMap](http://www.yiiframework.com/doc/api/1.1/CMap "CMap"), therefore it is possible to use simliar to an array.
 


### Safe reading
[...]
```php
$
cookivalue = (isset(Yii::app()->request->cookies['cookie_name'])) ? Yii::app()->request->cookies['cookie_name']->value : '';
 
// or
 
$value = Yii::app()->request->cookies->contains('cookie_name') ?
 
Yii::app()->request->cookies['cookie_name']->value : '';
```

This way, you'll get either cookie value or an empty string.

This example also gives us idea how to check, if particular cookie exits:
[...]
38 1
40 followers
Viewed: 195 641 times
Version: 1.1
Category: How-tos
Written by: Trejder
Last updated by: resurtm
Created on: Feb 26, 2011
Last updated: 11 years ago
Update Article

Revisions

View all history