Maison  >  Article  >  développement back-end  >  Gestion des sessions CakePHP

Gestion des sessions CakePHP

WBOY
WBOYoriginal
2024-09-10 17:26:38597parcourir

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.

Accès à l'objet de session

L'objet session peut être créé en exécutant le code suivant.

$session = $this->request->session();

Écriture des données de 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.

Exemple

$session->write('name', 'Virat Gandhi');

Lecture des données de session

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.

Exemple

$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.

Exemple

if ($session->check('name')) {
   // name exists and is not null.
}

Supprimer les données de session

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.

Exemple

$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.

Exemple

$session->consume('name');

Détruire une session

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()

Exemple

$session->destroy();

La destruction de la session supprimera toutes les données de session du serveur, mais ne supprimera pas le cookie de session.

Renouveller une session

Dans une situation où vous souhaitez alors renouveler la session utilisateur, nous pouvons utiliser la méthode renew() session.

Session::renew()

Exemple

$session->renew();

Séance complète

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.

Sortie

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

Written in Session

Visitez l'URL suivante pour lire les données de session − http://localhost/cakephp4/session-read

Gestion des sessions CakePHP

Visitez l'URL suivante pour vérifier les données de session − http://localhost/cakephp4/session-check

Gestion des sessions CakePHP Exists

Visitez l'URL suivante pour supprimer les données de session − http://localhost/cakephp4/session-delete Visitez le

Delete From Session

Visitez l'URL suivante pour détruire les données de session − http://localhost/cakephp4/session-destroy

Gestion des sessions CakePHP

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn