Session nous permet de gérer des utilisateurs uniques à travers les requêtes et de stocker les données d'utilisateurs spécifiques. Les données de session peuvent être accessibles n'importe où, n'importe où, où vous avez accès à l'objet de requête, c'est-à-dire que les sessions sont accessibles à partir de contrôleurs, de vues, d'assistants, de cellules et de composants.
L'objet session peut être créé en exécutant le code suivant.
$session = $this->request->session();
Pour écrire quelque chose en session, nous pouvons utiliser la méthode write() session.
Session::write($key, $value)
La méthode ci-dessus prendra deux arguments, la valeur et la clé sous laquelle la valeur sera stockée.
$session->write('name', 'Virat Gandhi');
Pour récupérer les données stockées de la session, nous pouvons utiliser la méthode read() session.
Session::read($key)
La fonction ci-dessus ne prendra qu'un seul argument, c'est-à-dire la clé de la valeur, qui a été utilisée au moment de l'écriture des données de session. Une fois la bonne clé fournie, la fonction renverra sa valeur.
$session->read('name');
Lorsque vous souhaitez vérifier si des données particulières existent ou non dans la session, vous pouvez utiliser la méthode check() session.
Session::check($key)
La fonction ci-dessus prendra uniquement la clé comme argument.
if ($session->check('name')) { // name exists and is not null. }
Pour supprimer des données de la session, nous pouvons utiliser la méthode delete() session pour supprimer les données.
Session::delete($key)
La fonction ci-dessus prendra uniquement la clé de la valeur à supprimer de la session.
$session->delete('name');
Lorsque vous souhaitez lire puis supprimer des données de la session, nous pouvons utiliser la méthode consume() session.
static Session::consume($key)
La fonction ci-dessus ne prendra que la clé comme argument.
$session->consume('name');
Nous devons détruire une session utilisateur, lorsque l'utilisateur se déconnecte du site et pour détruire la session, la méthode destroy() est utilisée.
Session::destroy()
$session->destroy();
La destruction de la session supprimera toutes les données de session du serveur, mais ne supprimera pas le cookie de session.
Dans une situation où vous souhaitez alors renouveler la session utilisateur, nous pouvons utiliser la méthode renew() session.
Session::renew()
$session->renew();
Apportez des modifications au 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('/session-object',['controller'=>'Sessions','action'=>'index']); $builder->connect('/session-read',['controller'=>'Sessions','action'=>'retrieve_session_data']); $builder->connect('/session-write',['controller'=>'Sessions','action'=> 'write_session_data']); $builder->connect('/session-check',['controller'=>'Sessions','action'=>'check_session_data']); $builder->connect('/session-delete',['controller'=>'Sessions','action'=>'delete_session_data']); $builder->connect('/session-destroy',['controller'=>'Sessions','action'=>'destroy_session_data']); $builder->fallbacks(); });
Créez un fichier SessionsController.php dans src/Controller/SessionsController.php. Copiez le code suivant dans le fichier du contrôleur
src/Controller/SessionsController.php
<?php namespace App\Controller; use App\Controller\AppController; class SessionsController extends AppController { public function retrieveSessionData() { //create session object $session = $this->request->getSession(); //read data from session $name = $session->read('name'); $this->set('name',$name); } public function writeSessionData(){ //create session object $session = $this->request->getSession(); //write data in session $session->write('name','Virat Gandhi'); } public function checkSessionData(){ //create session object $session = $this->request->getSession(); //check session data $name = $session->check('name'); $address = $session->check('address'); $this->set('name',$name); $this->set('address',$address); } public function deleteSessionData(){ //create session object $session = $this->request->getSession(); //delete session data $session->delete('name'); } public function destroySessionData(){ //create session object $session = $this->request->getSession(); //destroy session $session->destroy(); } } ?>
Créez un répertoire Sessions dans src/Template et sous ce répertoire, créez un fichier View appelé write_session_data.php. Copiez le code suivant dans ce fichier.
src/Template/Sessions/write_session_data.php
The data has been written in session.
Créez un autre fichier View appelé retrieve_session_data.php sous le même répertoire Sessions et copiez le code suivant dans ce fichier.
src/Template/Sessions/retrieve_session_data.php
Here is the data from session. Gestion des sessions CakePHP: =$name;?>
Créez un autre fichier View appelé check_session_data.ctp sous le même répertoire Sessions et copiez le code suivant dans ce fichier.
src/Template/Sessions/check_session_data.ctp
<?php if($name): ?> name exists in the session. <?php else: ?> name doesn't exist in the database <?php endif;?> <?php if($address): ?> address exists in the session. <?php else: ?> address doesn't exist in the database <?php endif;?>
Créez un autre fichier View appelé delete_session_data.ctp, sous le même répertoire Sessions et copiez le code suivant dans ce fichier.
src/Template/Sessions/delete_session_data.ctp
Data deleted from session.
Créez un autre fichier View appelé destroy_session_data.ctp, sous le même répertoire Sessions et copiez le code suivant dans ce fichier.
src/Template/Sessions/destroy_session_data.ctp
Session Gestion des sessions CakePHP.
Exécutez l'exemple ci-dessus en visitant l'URL suivante. Cette URL vous aidera à écrire des données en session.
http://localhost/cakephp4/session-write
Visitez l'URL suivante pour lire les données de session − http://localhost/cakephp4/session-read
Visitez l'URL suivante pour vérifier les données de session − http://localhost/cakephp4/session-check
Visitez l'URL suivante pour supprimer les données de session − http://localhost/cakephp4/session-delete Visitez le
Visitez l'URL suivante pour détruire les données de session − http://localhost/cakephp4/session-destroy
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!