CakePHP - Gestion des cookies

La gestion des cookies avec CakePHP est simple et sécurisée. Il existe une classe CookieComponent qui est utilisée pour gérer les cookies. La classe fournit plusieurs méthodes pour travailler avec les cookies.

Pour travailler avec les cookies, ajoutez ces 2 classes à votre contrôleur -

use Cake\Http\Cookie\Cookie;
use Cake\Http\Cookie\CookieCollection;

L'objet cookie doit d'abord être créé pour enregistrer un cookie.

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

Le nom et la valeur sont obligatoires et les autres sont des paramètres facultatifs.

Ecrire un cookie

Voici la syntaxe pour écrire un cookie.

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

Le cookie créé doit être ajouté à cookieCollection comme indiqué ci-dessous -

$cookie = new Cookie('name','XYZ');
$cookies = new CookieCollection([$cookie]);

Si l'objet de collecte de cookies est déjà créé, le reste des cookies peut être ajouté comme indiqué ci-dessous -

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

Lire le cookie

Pour lire le cookie, utilisez la méthode get () de cookiecollection.

Syntaxe

La syntaxe du cookie de lecture est la suivante -

Cake\Http\Cookie\CookieCollection::get($name)

Cela vous renverra l'interface cookiecollection, pour obtenir la valeur du cookie, vous devrez appeler la méthode getValue ().

Cake\Http\Cookie\CookieCollection Interface::getValue()

Vérifier le cookie

le has() La méthode de cookieCollection vous dira si le cookie est présent ou non.

Cake\Http\Cookie\CookieCollection::has($name)

Exemple

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

Supprimer le cookie

le remove()méthode est utilisée pour supprimer le cookie. Voici la syntaxe de la méthode remove ().

Cake\Http\Cookie\CookieCollection::remove($name)

La méthode remove () prendra un argument, le nom de la variable cookie ($ name) à supprimer.

Exemple 1

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

Exemple 2

Modifiez le fichier config / routes.php comme indiqué dans le programme suivant.

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'=>'Cookies','action'=>'testCookies']);
   $builder->fallbacks();
});

Créer un CookiesController.php déposer à src/Controller/CookiesController.php. Copiez le code suivant dans le fichier du contrôleur.

src/Controller/Cookies/CookiesController.php

<?php
   namespace App\Controller;
   use App\Controller\AppController;
   use Cake\Http\Cookie\Cookie;
   use Cake\Http\Cookie\CookieCollection;
   class CookiesController extends AppController{
      public $cookies;
      public function testCookies() {
         $cookie = new Cookie('name','XYZ');
         $this->cookies = new CookieCollection([$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());
      }
   }
?>

Créer un annuaire Cookies à src/Template et sous ce répertoire, créez un View fichier appelé test_cookies.php. Copiez le code suivant dans ce fichier.

src/Template/Cookie/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;
?>

Production

Exécutez l'exemple ci-dessus en visitant l'URL suivante - http: // localhost / cakephp4 / cookie / testcookies