Les notions de Session et Cookie avec CodeIgniter sont essentielles pour gérer la navigation, l’authentification et la personnalisation des applications web. Dans ce guide complet, nous allons plonger dans l’univers des sessions et cookies de CodeIgniter 4, avec des explications claires, des exemples concrets et une fréquence optimisée des mots-clés pour le SEO.
- Qu’est-ce qu’une session avec CodeIgniter 4 ?
- Exemple concret : Authentification avec Session CodeIgniter
- Messages temporaires (Flashdata) avec Session CodeIgniter
- Introduction au Cookie avec CodeIgniter 4
- Créer un Cookie avec CodeIgniter
- Lire un Cookie CodeIgniter
- Supprimer un Cookie CodeIgniter
- Exemple concret : choix du thème clair/sombre avec Cookie CodeIgniter
- Sécurité des sessions et cookies dans CodeIgniter 4
- Quelle est la différence entre Session CodeIgniter et Cookie CodeIgniter ?
- Enregistrer les sessions en base de données avec CodeIgniter 4
- Détection automatique d’un utilisateur connecté
- Gérer plusieurs utilisateurs avec Session CodeIgniter
- Cas concret : panier d’achat avec Session CodeIgniter
- Cookie CodeIgniter : suivi anonyme des visiteurs
- Optimisation SEO et performance
- Comparatif performance : Session CodeIgniter vs Cookie CodeIgniter
- Erreurs fréquentes à éviter
Qu’est-ce qu’une session avec CodeIgniter 4 ?
Une Session CodeIgniter permet de stocker temporairement des informations côté serveur entre les différentes requêtes HTTP d’un utilisateur. Cela peut inclure des données comme le nom de l’utilisateur connecté, son identifiant, son rôle ou encore des messages de confirmation. Pensez à bien sécuriser vos Sessions PHP.
Pourquoi utiliser une Session CodeIgniter ?
- Gérer les connexions utilisateurs (authentification)
- Conserver des données entre deux pages
- Protéger certaines zones d’un site (back-office, tableau de bord)
- Stocker temporairement des messages (flash messages)
Configuration de la session dans CodeIgniter 4
Par défaut, CodeIgniter 4 utilise le gestionnaire de session CodeIgniter\Session\Handlers\FileHandler
, qui stocke les sessions dans des fichiers.
Étape 1 : Configurer la session dans app/Config/App.php
public $sessionDriver = 'CodeIgniter\Session\Handlers\FileHandler';
public $sessionCookieName = 'ci_session';
public $sessionExpiration = 7200; // 2 heures
public $sessionSavePath = WRITEPATH . 'session';
Étape 2 : Charger la session
Dans un contrôleur :
$session = session();
Dès que vous utilisez session()
, vous accédez à la Session CodeIgniter.
Comment stocker une donnée dans une Session CodeIgniter
$session = session();
$session->set('username', 'Alban');
Comment lire une valeur de Session CodeIgniter
$username = $session->get('username');
echo "Bonjour, $username";
Comment vérifier si une variable de session existe
if ($session->has('username')) {
echo "Utilisateur connecté.";
}
Supprimer une variable de session
$session->remove('username');
Détruire toute la session
$session->destroy();
Exemple concret : Authentification avec Session CodeIgniter
Imaginons un formulaire avec CodeIngiter pour une connexion à un accès sécurisé. Lorsqu’un utilisateur s’identifie correctement, on stocke son identifiant dans une Session CodeIgniter.
Contrôleur : LoginController.php
public function login()
{
$session = session();
$username = $this->request->getPost('username');
$password = $this->request->getPost('password');
// Exemple fictif de validation
if ($username === 'admin' && $password === 'secret') {
$session->set([
'username' => $username,
'isLoggedIn' => true
]);
return redirect()->to('/dashboard');
} else {
$session->setFlashdata('error', 'Identifiants incorrects.');
return redirect()->back();
}
}
Utiliser une session dans une vue
<?php if (session()->has('username')): ?>
<p>Bonjour <?= session('username') ?> !</p>
<?php endif; ?>
Messages temporaires (Flashdata) avec Session CodeIgniter
Les Flashdata permettent de stocker temporairement des messages (1 requête seulement), très utile après une redirection.
session()->setFlashdata('success', 'Vous êtes connecté !');
Et pour l’afficher dans la vue :
<?php if (session()->getFlashdata('success')): ?>
<div class="alert alert-success">
<?= session()->getFlashdata('success') ?>
</div>
<?php endif; ?>
Introduction au Cookie avec CodeIgniter 4
Un Cookie CodeIgniter est un petit fichier stocké côté client (navigateur). Il est utilisé pour mémoriser des informations sur le visiteur : préférences, langue, ou même un identifiant de session si vous utilisez des sessions basées sur cookie.
Pourquoi utiliser un Cookie CodeIgniter ?
Voici quelques exemples d’utilisation des cookies avec CodeIgniter :
- Sauvegarder la langue choisie par l’utilisateur
- Mémoriser une préférence (thème sombre, tri par défaut…)
- Pré-remplir un formulaire (email, pseudo)
- Suivre l’utilisateur pour des statistiques anonymes
Créer un Cookie avec CodeIgniter
helper('cookie');
set_cookie('theme', 'dark', 3600); // Durée en secondes
Ce Cookie CodeIgniter nommé theme
est valable 1 heure.
Lire un Cookie CodeIgniter
$theme = get_cookie('theme');
Supprimer un Cookie CodeIgniter
delete_cookie('theme');
Exemple concret : choix du thème clair/sombre avec Cookie CodeIgniter
Imaginons une application qui propose à l’utilisateur de choisir entre un thème clair ou sombre. Ce choix est stocké dans un Cookie CodeIgniter.
Contrôleur : ThemeController.php
public function changeTheme($theme)
{
set_cookie('theme', $theme, 86400 * 30); // 30 jours
return redirect()->back();
}
Dans la vue : appliquer le thème
$theme = get_cookie('theme') ?? 'light';
echo '<body class="' . esc($theme) . '">';
Sécurité des sessions et cookies dans CodeIgniter 4
Pour la Session CodeIgniter
- Par défaut, CodeIgniter chiffre l’ID de session
- Utiliser le stockage fichier ou base de données pour plus de sécurité
- Éviter de stocker des informations sensibles (mot de passe, carte bancaire…)
Pour le Cookie CodeIgniter
- Utiliser des cookies sécurisés (HTTPS uniquement)
set_cookie([
'name' => 'token',
'value' => 'xyz123',
'expire' => 3600,
'secure' => true, // transmission via HTTPS uniquement
'httponly' => true // inaccessible en JavaScript
]);
Après avoir découvert les bases des Session CodeIgniter et Cookie CodeIgniter, nous allons approfondir leur utilisation avec des cas concrets, une gestion plus poussée, et des recommandations SEO et sécurité.
Quelle est la différence entre Session CodeIgniter et Cookie CodeIgniter ?
Fonctionnalité | Session CodeIgniter | Cookie CodeIgniter |
---|---|---|
Stockage | Serveur (par défaut dans des fichiers) | Navigateur (côté client) |
Sécurité | Plus sécurisé | Moins sécurisé, peut être modifié |
Taille des données | Illimitée (ou presque) | Environ 4 Ko max |
Persistance | Expire à la fermeture du navigateur (ou durée définie) | Peut durer des jours/semaines |
Utilisation idéale | Authentification, données sensibles | Préférences utilisateur, traçage simple |
En résumé, on utilise une Session CodeIgniter pour stocker des données critiques et un Cookie CodeIgniter pour retenir des préférences ou effectuer un suivi léger.
Enregistrer les sessions en base de données avec CodeIgniter 4
Pour une meilleure sécurité ou si vous hébergez votre site sur plusieurs serveurs, il est conseillé de stocker les Session CodeIgniter dans une base de données. Veillez à bien configurer CodeIgniter pour la connexion à la base de données.
Étape 1 : Créer la table SQL
CREATE TABLE ci_sessions (
id varchar(128) NOT NULL,
ip_address varchar(45) NOT NULL,
timestamp int(10) unsigned DEFAULT 0 NOT NULL,
data blob NOT NULL,
PRIMARY KEY (id),
KEY `ci_sessions_timestamp` (`timestamp`)
);
Étape 2 : Modifier app/Config/App.php
public $sessionDriver = 'CodeIgniter\Session\Handlers\DatabaseHandler';
public $sessionSavePath = 'ci_sessions'; // nom de la table
Maintenant, vos Session CodeIgniter sont enregistrées dans MySQL (ou autre SGBD).
Détection automatique d’un utilisateur connecté
Dans votre BaseController, vous pouvez ajouter ce code :

Des formations informatique pour tous !
Débutant ou curieux ? Apprenez le développement web, le référencement, le webmarketing, la bureautique, à maîtriser vos appareils Apple et bien plus encore…
Formateur indépendant, professionnel du web depuis 2006, je vous accompagne pas à pas et en cours particulier, que vous soyez débutant ou que vous souhaitiez progresser. En visio, à votre rythme, et toujours avec pédagogie.
Découvrez mes formations Qui suis-je ?protected $session;
public function initController(RequestInterface $request, ResponseInterface $response, LoggerInterface $logger)
{
parent::initController($request, $response, $logger);
$this->session = session();
if ($this->session->has('isLoggedIn') && $this->session->get('isLoggedIn') === true) {
// Utilisateur connecté
} else {
// Rediriger ou restreindre l'accès
}
}
Cette logique centralisée vous permet de sécuriser automatiquement tous les contrôleurs enfants.
Gérer plusieurs utilisateurs avec Session CodeIgniter
Si votre application gère plusieurs types d’utilisateurs (admin, prof, élève…), stockez leur rôle dans la Session CodeIgniter :
$session->set([
'username' => 'alban',
'role' => 'admin',
'isLoggedIn' => true
]);
Et vérifiez leur rôle :
if (session('role') === 'admin') {
// Accès autorisé
}
Cas concret : panier d’achat avec Session CodeIgniter
Vous pouvez stocker un panier d’achat complet dans une Session CodeIgniter, sans base de données.
Ajouter un produit
$cart = session()->get('cart') ?? [];
$cart[] = ['id' => 12, 'name' => 'Agrafe Affnox', 'qty' => 2];
session()->set('cart', $cart);
Afficher le panier
foreach (session('cart') as $item) {
echo $item['name'] . ' x ' . $item['qty'];
}
Cookie CodeIgniter : suivi anonyme des visiteurs
Pour des statistiques simples sans base externe, vous pouvez créer un identifiant unique par visiteur :
if (!get_cookie('visitor_id')) {
set_cookie('visitor_id', uniqid('user_'), 86400 * 365); // 1 an
}
Ce Cookie CodeIgniter vous permet de suivre anonymement les visites répétées d’un même utilisateur.
Optimisation SEO et performance
1. Ne pas indexer les URLs contenant des identifiants de session
Les moteurs de recherche n’aiment pas les URLs comme :
https://mon-site.com/page?PHPSESSID=sd89as98d9as
👉 CodeIgniter 4 ne passe pas les sessions en URL par défaut. Tant mieux.
2. Respecter la RGPD
Si vous utilisez un Cookie CodeIgniter pour suivre l’utilisateur, pensez à l’informer et à demander son consentement (bannière, popup).
3. Réduire la taille des cookies
Plus les cookies sont volumineux, plus chaque requête HTTP est lente. Ne stockez jamais d’informations inutiles dans un Cookie CodeIgniter.
Comparatif performance : Session CodeIgniter vs Cookie CodeIgniter
Critère | Session CodeIgniter | Cookie CodeIgniter |
---|---|---|
Sécurité | ★★★★☆ | ★★☆☆☆ |
Taille maximale | Élevée | 4 Ko |
Facilité de mise en œuvre | ★★★★☆ | ★★★☆☆ |
Performance (requête serveur) | Moyen | Très bon |
Usage recommandé | Authentification, panier, rôle utilisateur | Préférences simples, suivi |
Erreurs fréquentes à éviter
- ❌ Stocker trop de données dans un Cookie CodeIgniter
- ❌ Oublier de supprimer une Session CodeIgniter après déconnexion
- ❌ Ne pas sécuriser ses cookies (
secure
,httponly
) - ❌ Utiliser une session pour un visiteur anonyme sans nécessité
- ❌ Dépendre des cookies sans proposer d’alternative si désactivés
Bonnes pratiques
- ✅ Toujours valider les données récupérées depuis une session ou un cookie
- ✅ Limiter la durée de vie des cookies à ce qui est nécessaire
- ✅ Détruire les sessions lors de la déconnexion
- ✅ Sécuriser les cookies avec HTTPS (
secure = true
) - ✅ Protéger les sessions contre le hijacking avec un token CSRF

Conclusion
Les Session CodeIgniter et Cookie CodeIgniter sont deux outils indispensables pour créer des applications web dynamiques, sécurisées et personnalisées. Que ce soit pour gérer un panier d’achat, une connexion utilisateur, des préférences ou du suivi, vous avez désormais toutes les clés pour les utiliser de façon efficace.
En maîtrisant la Session CodeIgniter, vous contrôlez les données côté serveur avec plus de sécurité. En utilisant intelligemment les Cookie CodeIgniter, vous améliorez l’expérience utilisateur sans alourdir vos applications.
Allez plus loin avec CodeIgniter 4 :
- Route : Le guide complet
- Controller : Le guide complet
- Model : Le guide complet
- Un formulaire avec CodeIgniter 4
- La pagination avec CodeIgniter 4
- La gestion des Layout avec CodeIgniter 4
- Envoi de mail automatique avec CodeIgniter 4
- 🔥 Vendredi 25 Avril 2025 >19h00
HTML & SémantiqueStructure d'une page HTML