Tuesday, February 14, 2017

CakePHP - Cookie Management

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.
Cake\Controller\Component\CookieComponent::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', 'Virat');
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.
Cake\Controller\Component\CookieComponent::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.
Cake\Controller\Component\CookieComponent::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.
Cake\Controller\Component\CookieComponent::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 Cake\Core\Plugin;
   use Cake\Routing\RouteBuilder;
   use Cake\Routing\Router;

   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 App\Controller;
   use App\Controller\AppController;
   use Cake\Controller\Component\CookieComponent;

   class CookiesController extends AppController{
      public $components = array('Cookie');
   
      public function writeCookie(){
         $this->Cookie->write('name', 'Virat');
      }
      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.
Cookies Visit the following URL to read cookie datahttp://localhost:85/CakePHP/cookie/read
CakePHP Cookies Visit the following URL to check cookie datahttp://localhost:85/CakePHP/cookie/check
CakePHP Cookies Visit the following URL to delete cookie datahttp://localhost:85/CakePHP/cookie/delete
Cookies Deleted

No comments:

Post a Comment