Welcome to the Cookbook

loading...

5.3.2 Using the Component

The CookieComponent offers a number of methods for working with Cookies.

write(mixed $key, mixed $value, boolean $encrypt, mixed $expires)

The write() method is the heart of cookie component, $key is the cookie variable name you want, and the $value is the information to be stored.

$this->Cookie->write('name','Larry');
  1. $this->Cookie->write('name','Larry');

You can also group your variables by supplying dot notation in the key parameter.

$this->Cookie->write('User.name', 'Larry');
  $this->Cookie->write('User.role','Lead');  
  1. $this->Cookie->write('User.name', 'Larry');
  2. $this->Cookie->write('User.role','Lead');

If you want to write more than one value to the cookie at a time, you can pass an array:

$this->Cookie->write(
  array('name'=>'Larry','role'=>'Lead')
  );
  1. $this->Cookie->write(
  2. array('name'=>'Larry','role'=>'Lead')
  3. );

All values in the cookie are encrypted by default. If you want to store the values as plain-text, set the third parameter of the write() method to false. The encryption performed on cookie values is fairly uncomplicated encryption system. It uses Security.salt and a predefined CIPHER_SEED constant to encrypt values. To make your cookies more secure you should define CIPHER_SEED in your bootstrap to ensure a better encryption. The default value of CIPHER_SEED is 76859309657453542496749683645

$this->Cookie->write('name','Larry',false);
  1. $this->Cookie->write('name','Larry',false);

The last parameter to write is $expires – the number of seconds before your cookie will expire. For convenience, this parameter can also be passed as a string that the php strtotime() function understands:

//Both cookies expire in one hour.
  $this->Cookie->write('first_name','Larry',false, 3600);
  $this->Cookie->write('last_name','Masters',false, '1 hour');
  1. //Both cookies expire in one hour.
  2. $this->Cookie->write('first_name','Larry',false, 3600);
  3. $this->Cookie->write('last_name','Masters',false, '1 hour');

read(mixed $key)

This method is used to read the value of a cookie variable with the name specified by $key.

// Outputs “Larry”
  echo $this->Cookie->read('name');
  
  //You can also use the dot notation for read
  echo $this->Cookie->read('User.name');
  
  //To get the variables which you had grouped
  //using the dot notation as an array use something like  
  $this->Cookie->read('User');
  
  // this outputs something like array('name' => 'Larry', 'role'=>'Lead')
  1. // Outputs “Larry”
  2. echo $this->Cookie->read('name');
  3. //You can also use the dot notation for read
  4. echo $this->Cookie->read('User.name');
  5. //To get the variables which you had grouped
  6. //using the dot notation as an array use something like
  7. $this->Cookie->read('User');
  8. // this outputs something like array('name' => 'Larry', 'role'=>'Lead')
del(mixed $key)

Deletes a cookie variable of the name in $key. Works with dot notation.

  //Delete a variable
  $this->Cookie->del('bar')
  
  //Delete the cookie variable bar, but not all under foo
  $this->Cookie->del('foo.bar')
 
  1. //Delete a variable
  2. $this->Cookie->del('bar')
  3. //Delete the cookie variable bar, but not all under foo
  4. $this->Cookie->del('foo.bar')
destroy()

Destroys the current cookie.