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
![](https://assets.edu.lat/cakephp/images/cookie.jpg)