Gestion des sessions CakePHP

WBOY
Libérer: 2024-09-10 17:26:38
original
792 Les gens l'ont consulté

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();
Copier après la connexion

Écriture des données de session

Pour écrire quelque chose en session, nous pouvons utiliser la méthode write() session.

Session::write($key, $value)
Copier après la connexion

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');
Copier après la connexion

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)
Copier après la connexion

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');
Copier après la connexion

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)
Copier après la connexion

La fonction ci-dessus prendra uniquement la clé comme argument.

Exemple

if ($session->check('name')) {
   // name exists and is not null.
}
Copier après la connexion

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)
Copier après la connexion

La fonction ci-dessus prendra uniquement la clé de la valeur à supprimer de la session.

Exemple

$session->delete('name');
Copier après la connexion

Lorsque vous souhaitez lire puis supprimer des données de la session, nous pouvons utiliser la méthode consume() session.

static Session::consume($key)
Copier après la connexion

La fonction ci-dessus ne prendra que la clé comme argument.

Exemple

$session->consume('name');
Copier après la connexion

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()
Copier après la connexion

Exemple

$session->destroy();
Copier après la connexion

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()
Copier après la connexion

Exemple

$session->renew();
Copier après la connexion

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();
});
Copier après la connexion

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();
   }
}
?>
Copier après la connexion

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.
Copier après la connexion

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;?>
Copier après la connexion

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;?>
Copier après la connexion

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.
Copier après la connexion

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.
Copier après la connexion

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!

Étiquettes associées:
source:php
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal