Handling Cookie with CakePHP is easy and secure. There is a CookieComponent class which is used for managing Cookie. The class provides several methods for working with Cookies.
Write Cookie
The write() method is used to write cookie. Following is the syntax of the write() method.
CakeControllerComponentCookieComponent::write(mixed $key, mixed $value = null)
The write() method will take two arguments, the name of cookie variable ($key), and the value of cookie variable ($value).
Example
$this->Cookie->write(‘name’, ‘John’);
We can pass array of name, values pair to write multiple cookies.
Read Cookie
The read() method is used to read cookie. Following is the syntax of the read() method.
CakeControllerComponentCookieComponent::read(mixed $key = null)
The read() method will take one argument, the name of cookie variable ($key).
Example
echo $this->Cookie->read(‘name’);
Check Cookie
The check() method is used to check whether a key/path exists and has a non-null value. Following is the syntax of the check() method.
CakeControllerComponentCookieComponent::check($key)
Example
echo $this->Cookie->check(‘name’);
Delete Cookie
The delete() method is used to delete cookie. Following is the syntax of the delete() method.
CakeControllerComponentCookieComponent::delete(mixed $key)
The delete() method will take one argument, the name of cookie variable ($key) to delete.
Example 1
$this->Cookie->delete(‘name’);
Example 2
Make changes in the config/routes.php file as shown in the following program.
config/routes.php
<?php use CakeCorePlugin; use CakeRoutingRouteBuilder; use CakeRoutingRouter; Router::defaultRouteClass(‘DashedRoute’); Router::scope(‘/’, function (RouteBuilder $routes) { $routes->connect(‘cookie/write’,[‘controller’=>’Cookies’,’action’=>’write_cookie’]); $routes->connect(‘cookie/read’,[‘controller’=>’Cookies’,’action’=>’read_cookie’]); $routes->connect(‘cookie/check’,[‘controller’=>’Cookies’,’action’=>’check_cookie’]); $routes->connect(‘cookie/delete’,[‘controller’=>’Cookies’,’action’=>’delete_cookie’]); $routes->fallbacks(‘DashedRoute’); }); Plugin::routes();
Create a CookiesController.php file at src/Controller/CookiesController.php. Copy the following code in the controller file.
src/Controller/Cookies/CookiesController.php
<?php namespace AppController; use AppControllerAppController; use CakeControllerComponentCookieComponent; class CookiesController extends AppController{ public $components = array(‘Cookie’); public function writeCookie(){ $this->Cookie->write(‘name’, ‘John’); } public function readCookie(){ $cookie_val = $this->Cookie->read(‘name’); $this->set(‘cookie_val’,$cookie_val); } public function checkCookie(){ $isPresent = $this->Cookie->check(‘name’); $this->set(‘isPresent’,$isPresent); } public function deleteCookie(){ $this->Cookie->delete(‘name’); } } ?>
Create a directory Cookies at src/Template and under that directory create a View file called write_cookie.ctp. Copy the following code in that file.
src/Template/Cookie/write_cookie.ctp
The cookie has been written.
Create another View file called read_cookie.ctp under the same Cookies directory and copy the following code in that file.
src/Template/Cookie/read_cookie.ctp
The value of the cookie is: <?php echo $cookie_val; ?>
Create another View file called check_cookie.ctp under the same Cookies directory and copy the following code in that file.
src/Template/Cookie/check_cookie.ctp
<?php if($isPresent): ?> The cookie is present. <?php else: ?> The cookie isn’t present. <?php endif; ?>
Create another View file called delete_cookie.ctp under the same Cookies directory and copy the following code in that file.
src/Template/Cookie/delete_cookie.ctp
The cookie has been deleted.
Output
Execute the above example by visiting the following URL − http://localhost:85/CakePHP/cookie/write
This will help you write data in cookie.
Visit the following URL to read cookie data − http://localhost:85/CakePHP/cookie/read
Visit the following URL to check cookie data − http://localhost:85/CakePHP/cookie/check
Visit the following URL to delete cookie data − http://localhost:85/CakePHP/cookie/delete