CodeIgniter - Gestion de session

Lors de la création de sites Web, nous devons souvent suivre l'activité et l'état de l'utilisateur et, à cette fin, nous devons utiliser session. CodeIgniter a une classe de session à cet effet.

Initialiser une session

Les données des sessions sont disponibles dans le monde entier via le site, mais pour utiliser ces données, nous devons d'abord initialiser la session. Nous pouvons le faire en exécutant la ligne suivante dans le constructeur.

$this->load->library('session');

Après avoir chargé la bibliothèque de session, vous pouvez simplement utiliser l'objet de session comme indiqué ci-dessous.

$this->session

Ajouter des données de session

En PHP, nous utilisons simplement $_SESSION array pour définir les données de la session comme indiqué ci-dessous.

$_SESSION[‘key’] = value;

Où 'key'est la clé du tableau et value est attribué sur le côté droit du signe égal à.

La même chose peut être faite dans CodeIgniter comme indiqué ci-dessous.

$this->session->set_userdata('some_name', 'some_value');

set_userdata()La fonction prend deux arguments. Le premier argument,some_name, est le nom de la variable de session sous laquelle, some_value sera stocké.

set_userdata() La fonction prend également en charge une autre syntaxe dans laquelle vous pouvez transmettre un tableau pour stocker des valeurs comme indiqué ci-dessous.

$newdata = array( 
   'username'  => 'johndoe', 
   'email'     => '[email protected]', 
   'logged_in' => TRUE
);  

$this->session->set_userdata($newdata);

Supprimer les données de session

En PHP, nous pouvons supprimer les données stockées en session en utilisant le unset() fonction comme indiqué ci-dessous.

unset($_SESSION[‘some_name’]);

La suppression des données de session dans CodeIgniter est très simple, comme indiqué ci-dessous. La version ci-dessous deunset_userdata() La fonction ne supprimera qu'une seule variable de la session.

$this->session->unset_userdata('some_name');

Si vous souhaitez supprimer plus de valeurs de la session ou supprimer un tableau entier, vous pouvez utiliser la version ci-dessous de unset_userdata() fonction.

$this->session->unset_userdata($array_items);

Récupérer les données de session

Après avoir défini les données en session, nous pouvons également récupérer ces données comme indiqué ci-dessous. Userdata()La fonction sera utilisée à cet effet. Cette fonction retourneraNULL si les données auxquelles vous essayez d'accéder ne sont pas disponibles.

$name = $this->session->userdata('name');

Exemple

Créez une classe de contrôleur appelée Session_controller.php et enregistrez-le dans application/controller/Session_controller.php.

<?php 
   class Session_controller extends CI_Controller {
	
      public function index() { 
         //loading session library 
         $this->load->library('session');
			
         //adding data to session 
         $this->session->set_userdata('name','virat');
			
         $this->load->view('session_view'); 
      } 
		
      public function unset_session_data() { 
         //loading session library
         $this->load->library('session');
			
         //removing session data 
         $this->session->unset_userdata('name'); 
         $this->load->view('session_view'); 
      } 
		
   } 
?>

Créez un fichier de vue appelé session_view.php et enregistrez-le dans application/views/session_view.php

<!DOCTYPE html> 
<html lang = "en">
 
   <head> 
      <meta charset = "utf-8"> 
      <title>CodeIgniter Session Example</title> 
   </head>
	
   <body> 
      Welcome <?php echo $this->session->userdata('name'); ?> 
      <br> 
      <a href = 'http://localhost:85/CodeIgniter-3.0.1/CodeIgniter3.0.1/index.php/sessionex/unset'>
         Click Here</a> to unset session data. 
   </body>
	
</html>

Apportez les modifications dans le routes.php déposer dans application/config/routes.php et ajoutez la ligne suivante à la fin du fichier.

$route['sessionex'] = 'Session_Controller';

Exécutez l'exemple ci-dessus en utilisant l'adresse suivante. Remplaceryoursite.com avec l'URL de votre site.

http://yoursite.com/index.php/sessionex