Yii - Séances

Les sessions rendent les données accessibles sur différentes pages. Une session crée un fichier sur le serveur dans un répertoire temporaire où toutes les variables de session sont stockées. Ces données sont disponibles pour toutes les pages de votre site Web lors de la visite de cet utilisateur particulier.

Lorsqu'une session démarre, ce qui suit se produit -

  • PHP crée un identifiant unique pour cette session particulière.

  • Un cookie appelé PHPSESSID est envoyé côté client (vers le navigateur).

  • Le serveur crée un fichier dans le dossier temporaire où toutes les variables de session sont enregistrées.

  • Lorsqu'un serveur veut récupérer la valeur d'une variable de session, PHP obtient automatiquement l'ID de session unique du cookie PHPSESSID. Ensuite, il cherche dans son répertoire temporaire le fichier nécessaire.

Pour démarrer une session, vous devez appeler le session_start()fonction. Toutes les variables de session sont stockées dans le$_SESSIONvariable globale. Vous pouvez également utiliser leisset() fonction pour vérifier si la variable de session est définie -

<?php
   session_start();
   if( isset( $_SESSION['number'] ) ) {
      $_SESSION['number'] += 1;
   }else {
      $_SESSION['number'] = 1;
   }
   $msg = "This page was visited ".  $_SESSION['number'];
   $msg .= "in this session.";
   echo $msg;
?>

Pour détruire une session, vous devez appeler le session_destroy()fonction. Pour détruire une seule variable de session, appelez leunset() fonction -

<?php
   unset($_SESSION['number']);
   session_destroy();
?>

Utilisation des sessions dans Yii

Les sessions permettent de conserver les données dans les demandes des utilisateurs. En PHP, vous pouvez y accéder via le$_SESSIONvariable. Dans Yii, vous pouvez accéder aux sessions via le composant d'application de session.

Step 1 - Ajouter le actionOpenAndCloseSession méthode à la SiteController.

public function actionOpenAndCloseSession() {
   $session = Yii::$app->session;
   // open a session
   $session->open();
   // check if a session is already opened
   if ($session->isActive) echo "session is active";
   // close a session
   $session->close();
   // destroys all data registered to a session
   $session->destroy();
}

Dans le code ci-dessus, nous récupérons le composant d'application de session, ouvrons une session, vérifions s'il est actif, fermons la session et finalement la détruisons.

Step 2 - Type http://localhost:8080/index.php?r=site/open-and-close-session dans la barre d'adresse du navigateur Web, vous verrez ce qui suit.

Pour accéder aux variables de session, vous pouvez utiliser set() et get() méthodes.

Step 3 - Ajouter un actionAccessSession méthode à la SiteController.

public function actionAccessSession() {

   $session = Yii::$app->session;
	
   // set a session variable
   $session->set('language', 'ru-RU');
	
   // get a session variable
   $language = $session->get('language');
   var_dump($language);
		  
   // remove a session variable
   $session->remove('language');
		  
   // check if a session variable exists
   if (!$session->has('language')) echo "language is not set";
		  
   $session['captcha'] = [
      'value' => 'aSBS23',
      'lifetime' => 7200,
   ];
   var_dump($session['captcha']);
}

Step 4 - Aller à http://localhost:8080/index.php?r=site/access-session, vous verrez ce qui suit.