Home >Backend Development >PHP Tutorial >CakePHP Cookie Management

CakePHP Cookie Management

WBOY
WBOYOriginal
2024-09-10 17:26:47906browse

Handling CakePHP Cookie Management with CakePHP is easy and secure. There is a CakePHP Cookie ManagementComponent class which is used for managing CakePHP Cookie Management. The class provides several methods for working with CakePHP Cookie Managements.

To work with cookies, add this 2 classes to your controller −

use Cake\Http\CakePHP Cookie Management\CakePHP Cookie Management;
use Cake\Http\CakePHP Cookie Management\CakePHP Cookie ManagementCollection;

The cookie object has to be created first to register a cookie.

$cookie = new CakePHP Cookie Management(name,value,expiration time,path,domain);

The name and value are mandatory and others are optional param.

Write CakePHP Cookie Management

Following is the syntax to write a cookie.

$cookie = new CakePHP Cookie Management(name,value,expiration time,path,domain);

The cookie created has to be added to cookieCollection as shown below −

$cookie = new CakePHP Cookie Management('name','XYZ');
$cookies = new CakePHP Cookie ManagementCollection([$cookie]);

If the cookie collection object is already created, the rest of the cookies can be added as shown below −

$cookies = $cookies->add($cookie);

Read CakePHP Cookie Management

To read cookie make use of get() method from cookiecollection.

Syntax

The syntax for read cookie is as follows −

Cake\Http\CakePHP Cookie Management\CakePHP Cookie ManagementCollection::get($name)

This will return you cookiecollection Interface, to get the value of the cookie, you will have to call the method getValue().

Cake\Http\CakePHP Cookie Management\CakePHP Cookie ManagementCollection Interface::getValue()

Check CakePHP Cookie Management

The has() method from cookieCollection will tell you, if the cookie is present or not.

Cake\Http\CakePHP Cookie Management\CakePHP Cookie ManagementCollection::has($name)

Example

echo $isPresent = $this->cookies->has('name');

Delete CakePHP Cookie Management

The remove() method is used to delete cookie. Following is the syntax of the remove() method.

Cake\Http\CakePHP Cookie Management\CakePHP Cookie ManagementCollection::remove($name)

The remove() method will take one argument, the name of cookie variable ($name) to delete.

Example 1

$test = $this->cookies->remove('name');

Example 2

Make changes in the config/routes.php file as shown in the following program.

config/routes.php

<?php use Cake\Http\Middleware\CsrfProtectionMiddleware;
use Cake\Routing\Route\DashedRoute;
use Cake\Routing\RouteBuilder;
$routes->setRouteClass(DashedRoute::class);
$routes->scope('/', function (RouteBuilder $builder) {
   $builder->registerMiddleware('csrf', new CsrfProtectionMiddleware([
      'httpOnly' => true,
   ]));
   $builder->applyMiddleware('csrf');
   //$builder->connect('/pages',['controller'=>'Pages','action'=>'display', 'home']);
   $builder->connect('cookie/testcookies',['controller'=>'CakePHP Cookie Managements','action'=>'testCakePHP Cookie Managements']);
   $builder->fallbacks();
});

Create a CakePHP Cookie ManagementsController.php file at src/Controller/CakePHP Cookie ManagementsController.php. Copy the following code in the controller file.

src/Controller/CakePHP Cookie Managements/CakePHP Cookie ManagementsController.php

<?php namespace App\Controller;
   use App\Controller\AppController;
   use Cake\Http\CakePHP Cookie Management\CakePHP Cookie Management;
   use Cake\Http\CakePHP Cookie Management\CakePHP Cookie ManagementCollection;
   class CakePHP Cookie ManagementsController extends AppController{
      public $cookies;
      public function testCakePHP Cookie Managements() {
         $cookie = new CakePHP Cookie Management('name','XYZ');
         $this->cookies = new CakePHP Cookie ManagementCollection([$cookie]);
         $cookie_val = $this->cookies->get('name');
         $this->set('cookie_val',$cookie_val->getValue());
         $isPresent = $this->cookies->has('name');
         $this->set('isPresent',$isPresent);
         $this->set('count', $this->cookies->count());
         $test = $this->cookies->remove('name');
         $this->set('count_afterdelete', $test->count());
      }
   }
?>

Create a directory CakePHP Cookie Managements at src/Template and under that directory create a View file called test_cookies.php. Copy the following code in that file.

src/Template/CakePHP Cookie Management/test_cookies.php

The value of the cookie is: <?php echo $cookie_val; ?>

<br>
<?php if($isPresent):
?>
The cookie is present.
<?php else:
?>
The cookie isn't present.
<?php endif;
?>
<br>
<?php echo "The count of cookie before delete is :" .$count;
?>
<br>
<?php echo "The count of cookie after delete is :" .$count_afterdelete;
?>

Output

Execute the above example by visiting the following URL − http://localhost/cakephp4/cookie/testcookies

CakePHP Cookie Management

The above is the detailed content of CakePHP Cookie Management. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn