Comment configurer une session dans CodeAllumeur avec exemple
⚡ Résumé intelligent
CodeLa gestion de session Igniter stocke les données utilisateur entre les requêtes HTTP sans état, permettant à une application de mémoriser un utilisateur connecté, les articles de son panier ou des messages flash ponctuels. Cet exemple illustre l'envoi de messages flash et une connexion simulée. CodeBibliothèque de session Igniter.

CodeGestion de session Igniter
Si vous avez déjà développé des applications de bureau, vous savez probablement qu'il est possible de définir une variable globale, de lui attribuer une valeur et de l'utiliser tout au long du cycle de vie de l'application. Lors de l'ouverture et de la fermeture de plusieurs formulaires, chaque requête aura accès à cette variable globale.
En d'autres termes, l'état de l'application est conservé. Autrement dit, si lors de votre connexion vous avez défini le nom de l'entreprise dans une variable globale, alors même après la fermeture du formulaire de connexion, ce nom d'entreprise est préservé.
Le protocole HTTP fonctionne différemment du scénario que nous venons de décrire. Il est sans état. Autrement dit, les actions effectuées dans une requête ne sont pas conservées dans la requête suivante.
Pour contourner ce problème, nous disposons de deux solutions en PHP. Nous pouvons soit utiliser des cookies, qui sont de petits fichiers placés sur l'ordinateur de l'utilisateur, soit utiliser des sessions, qui sont similaires aux cookies mais sont stockées sur le serveur et ont une capacité plus importante.
Quand utiliser les séances ?
Les sessions sont généralement utiles pour suivre l'activité d'un utilisateur d'une page à l'autre. Par exemple, imaginons une zone protégée sur un site web. Les utilisateurs n'ont pas besoin de se connecter à chaque page. Il suffit de leur permettre de se connecter une seule fois et de stocker leurs identifiants dans une variable de session, puis de réutiliser ces données lors des requêtes suivantes. On peut également les utiliser dans le cadre d'une boutique en ligne.ping le système et l'utilisateur doivent ajouter des articles à la boutiqueping Chariot.
Alternativement, CodeIgniter utilise également les sessions pour que les données ne soient disponibles qu'une seule fois, lors de la requête suivante. Ceci est utile lorsque vous avez modifié et mis à jour un enregistrement de base de données et que vous souhaitez afficher un message à l'utilisateur lorsqu'il est redirigé vers une autre page.
Envoi de messages Flash vers d'autres pages avec des sessions CI
Dans cette section, vous apprendrez à envoyer des messages flash vers d'autres pages à l'aide de la bibliothèque de sessions dans Codeallumeur.
Créez un nouveau fichier SessionController dans
application/controllers/SessionController.php
Ajoutez le code suivant
<?php defined('BASEPATH') OR exit('No direct script access allowed'); class SessionController extends CI_Controller { public function __construct() { parent:: __construct(); $this->load->helper('url'); $this->load->library('session'); } public function index() { $this->load->view('sessions/index'); } public function flash_message(){ $this->session->set_flashdata('msg', 'Welcome to CodeIgniter Flash Messages'); redirect(base_url('flash_index')); } }
ICI,
- class SessionController extends CI_Controller {…} définit la classe SessionController et étend la classe du contrôleur parent.
- public function __construct() {…} définit la méthode constructeur qui initialise la classe parent et charge l'assistant d'URL et la bibliothèque de session.
- public function index() {…} définit la méthode d'index de session qui charge la vue d'index de session.
- public function flash_message(){…} définit la méthode de message flash qui définit les données flash puis redirige vers la route flash_index
Créons maintenant la vue qui affichera la valeur des données de session.
Créez un nouveau répertoire sessions dans application/views
Créez un nouveau fichier index.php dans application/views/sessions
Ajoutez le code suivant
<html>
<head>
<title>Code Igniter Flash Session</title>
</head>
<body>
<p>The session value of msg is <b> <?= $this->session->userdata('msg');?> </b></p>
</body>
</html>
ICI,
session->userdata('msg');?> récupère la valeur des données de session avec la clé msg et l'affiche dans le navigateur.
Créons maintenant les routes pour notre méthode flash de session
Ouvrez application/config/routes.php
Ajouter les lignes suivantes
$route['flash_index'] = 'sessioncontroller'; $route['flash_message'] = 'sessioncontroller/flash_message';
Commençons maintenant le serveur intégré pour PHP et testez nos messages flash
Ouvrir le terminal
Exécutez la commande suivante
cd C:\Sites\ci-app php -S localhost:3000
ICI,
La commande ci-dessus accède au répertoire du code de l'application et démarre le serveur intégré sur le port 3000.
Remarque : le chemin d’accès à l’application doit correspondre au chemin d’accès où vous l’avez téléchargée. CodeAvec Igniter, vous pouvez utiliser n'importe quel port libre sur votre ordinateur. Il n'est pas nécessaire d'utiliser le port 3000.
Charger les éléments suivants URL dans votre navigateur Web : http://localhost:3000/flash_message
Vous serez redirigé vers la page suivante URLet vous obtiendrez les résultats suivants : http://localhost:3000/flash_index
Cliquez sur le bouton Actualiser de votre navigateur Web ou appuyez sur F5
Vous obtiendrez maintenant les résultats suivants
Stockage des données utilisateur dans les sessions CI
Prenons maintenant un exemple légèrement plus complexe. Par souci de simplicité, nous simulerons l'authentification de l'utilisateur sans implémenter la vérification de son enregistrement dans la base de données ni du mot de passe saisi.
Commençons par les itinéraires
Ouvrez routes.php situé dans application/config
Ajoutez les itinéraires suivants
$route['login'] = 'sessioncontroller/login'; $route['authenticate'] = 'sessioncontroller/authenticate'; $route['settings'] = 'sessioncontroller/settings'; $route['dashboard'] = 'sessioncontroller/dashboard'; $route['logout'] = 'sessioncontroller/logout';
ICI,
- $route['login'] = 'sessioncontroller/login'; définit l'itinéraire qui affiche le formulaire de connexion
- $route['authenticate'] = 'sessioncontroller/authenticate'; définit l'itinéraire qui simule une connexion utilisateur réussie et définit les données de connexion de session.
- $route['settings'] = 'sessioncontroller/settings'; définit une page protégée qui ne doit être accessible qu'aux utilisateurs connectés
- $route['dashboard'] = 'sessioncontroller/dashboard'; définit une page protégée qui ne doit être accessible qu'aux utilisateurs connectés.
- $route['logout'] = 'sessioncontroller/logout'; déconnecte l'utilisateur en détruisant les données de session
Mettons maintenant à jour le SessionController
Ouvrez application/controllers/SessionController.php
Ajoutez les méthodes suivantes
public function check_auth($page) { if (!$this->session->userdata('logged_in')) { $this->session->set_flashdata('msg', "You need to be logged in to access the $page page."); redirect('login'); } } public function login() { $this->load->view('sessions/login'); } public function authenticate() { $this->session->set_userdata('username', 'John Doe'); $this->session->set_userdata('logged_in', TRUE); redirect(base_url('dashboard')); } public function dashboard() { $this->check_auth('dashboard'); $this->load->view('sessions/dashboard'); } public function settings() { $this->check_auth('settings'); $this->load->view('sessions/settings'); } public function logout() { $this->session->unset_userdata('username'); $this->session->unset_userdata('logged_in'); redirect(base_url('login')); }
ICI,
- La fonction publique `check_auth($page) {…}` définit la méthode qui vérifie si l'utilisateur est connecté, puis autorise l'accès à la page. Si l'utilisateur n'est pas connecté, il est redirigé vers la page de connexion et un message d'erreur s'affiche.
- public function login() {…} charge la vue de connexion située dans le répertoire sessions.
- public function Authenticate() {…} définit les données utilisateur de session pour les cléslog_in et username. REMARQUE : Nous ne vérifions aucune information de connexion par rapport à la base de données. Nous supposons simplement que les détails soumis sont corrects et définissons les données de session.
- public function dashboard() {…} charge la page du tableau de bord après avoir appelé $this->check_auth('dashboard'); qui vérifie que la clé de session logged_in est définie.
- La fonction publique settings() {…} charge la page des paramètres, qui est également protégée.
- public function logout() {…} détruit les données de session et déconnecte l'utilisateur. La méthode redirige également vers la page de connexion
CodeVues de session Igniter
Créez les vues suivantes dans application/views/sessions
- tableau de bord.php
- login.php
- settings.php
Ajoutez le code suivant à Dashboard.php
<!DOCTYPE html> <html> <head> <title>Dashboard</title> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <link rel="stylesheet" href="https:0 </head> <body> <div class="container"> <div class="column"> <nav class="navbar" role="navigation" aria-label="main navigation"> <div id="navbarBasicExample" class="navbar-menu"> <div class="navbar-start"> <a href="<?= site_url('dashboard')?>" class="navbar-item is-active">Dashboard</a> <a href="<?= site_url('settings')?>" class="navbar-item">Settings</a> </div> <div class="navbar-end"> <div class="navbar-item has-dropdown is-hoverable"> <a class="navbar-link"><?=$this->session->userdata(3);?></a> <div class="navbar-dropdown"> <a class="navbar-item">My Profile</a> <hr class="navbar-divider"> <a class="navbar-item">Sign out</a> </div> </div> </div> </div> </nav> <h3>Welcome Page</h3> </div> </div> </body> </html>
ICI,
session->userdata('username');?> affiche le nom d'utilisateur que nous avons défini dans la méthode d'authentification
Ajoutez le code suivant à login.php
<!DOCTYPE html> <html> <head> <title>Login</title> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <link rel="stylesheet" href="https:0 </head> <body> <div class="container"> <div class="column"> <p><?=$this->session->userdata(1);?></p> <form method="post" action="<?= site_url('authenticate')?>"> <div class="field"> <label class="label">Username</label> <div class="control"> <input class="input" type="text" placeholder="Text input"> </div> </div> <div class="field"> <label class="label">Password</label> <div class="control"> <input class="input" type="password" placeholder="Text input"> </div> </div> <div class="field is-grouped"> <div class="control"> <button class="button is-success">Login</button> </div> </div> </form> </div> </div> </body> </html>
ICI,
Le formulaire de connexion est soumis à la procédure d'authentification.
Ajoutez le code suivant à settings.php
<!DOCTYPE html> <html> <head> <title>Settings</title> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <link rel="stylesheet" href="https:0 </head> <body> <div class="container"> <div class="column"> <nav class="navbar" role="navigation" aria-label="main navigation"> <div id="navbarBasicExample" class="navbar-menu"> <div class="navbar-start"> <a href="<?= site_url('dashboard')?>" class="navbar-item">Dashboard</a> <a href="<?= site_url('settings')?>" class="navbar-item">Settings</a> </div> <div class="navbar-end"> <div class="navbar-item has-dropdown is-hoverable"> <a class="navbar-link">Jim Jones</a> <div class="navbar-dropdown"> <a href="#" class="navbar-item">My Profile</a> <hr class="navbar-divider"> <a href="<?= site_url('logout')?>" class="navbar-item">Sign out</a> </div> </div> </div> </div> </nav> <h3>Settings Page</h3> </div> </div> </body> </html>
Voilà pour nos présentations. Passons maintenant au test de notre application.
Dans ce didacticiel, nous utilisons le serveur Web PHP intégré, mais vous pouvez utiliser n'importe quel serveur Web prenant en charge PHP.
Ouvrir le terminal
Exécutez la commande suivante
cd C:\Sites\ci-app php -S localhost:3000
ICI,
La commande ci-dessus accède au répertoire du code de l'application et démarre le serveur intégré sur le port 3000.
Remarque : le chemin d’accès à l’application doit correspondre au chemin d’accès où vous l’avez téléchargée. CodeAvec Igniter, vous pouvez utiliser n'importe quel port libre sur votre ordinateur. Il n'est pas nécessaire d'utiliser le port 3000.
Ouvrez ce qui suit URL dans votre navigateur Web : http://localhost:3000/dashboard
Vous serez redirigé vers la page suivante
Cliquez sur le bouton Connexion
Vous verrez les résultats suivants
Une fois connectés, nous pouvons maintenant voir les données de session.




