Skip to main content

Qu’est-ce qu’une session

HTTP est un protocole sans état : il ne dispose pas nativement d’un moyen de conserver des informations d’un utilisateur entre les requêtes. La session de Laravel fournit ce moyen sur plusieurs requêtes. État de connexion, contenu d’un panier, valeurs saisies dans un formulaire… placez en session tout ce que vous voulez conserver entre les requêtes.

Configuration du driver de session

La configuration se trouve dans config/session.php. Vous changez le driver via la variable SESSION_DRIVER (dans .env).
Drivers pris en charge par défaut :
Le projet Laravel par défaut est configuré avec le driver database. Une table sessions est nécessaire, mais elle est fournie par la migration par défaut.

Sérialisation de la session

Dans le squelette d’application Laravel 13, config/session.php définit serialization sur json. Cependant, la valeur par défaut interne du framework reste php.
Changer ce paramètre de php à json invalide toutes les sessions utilisateur actives. Cela peut également provoquer des erreurs si des objets PHP sont stockés en session.
Pour conserver les sessions actives lors de la mise à niveau, définissez explicitement php. Si votre application ne stocke pas d’objets PHP en session et que vous acceptez de forcer les utilisateurs à se reconnecter, vous pouvez utiliser json pour une sécurité accrue.

Accéder à la session

Deux façons d’accéder à la session : via une instance Request, ou via le helper global session().

Via l’instance Request

Recevez Request par type-hint dans la méthode de contrôleur, puis appelez $request->session().

Via le helper session()

Le helper session() est utilisable depuis n’importe où (contrôleurs, vues…).
Les deux approches se testent avec assertSessionHas. Dans un contrôleur, $request->session() rend la dépendance explicite.

Opérations sur la session

Lecture

Vérification de présence

Différence entre has et exists :

Écriture

Suppression

Données flash

Les données flash sont des données de session valides uniquement pour la requête suivante. Utiles pour les messages de confirmation d’un formulaire ou les erreurs à afficher une seule fois.

Enregistrer avec flash()

Elles restent disponibles à la requête suivante, puis sont automatiquement supprimées.

Prolonger la durée des données flash

Afficher un message flash dans Blade

Placez l’affichage des messages flash dans un layout (layouts/app.blade.php) pour un affichage cohérent sur toutes les pages.

Exemple : message après envoi de formulaire

Après l’envoi d’un formulaire, enregistrer un message de succès en session et rediriger pour l’afficher à la page suivante est un pattern classique.
1

Définition des routes

2

Implémentation du contrôleur

Dans store, après enregistrement, redirigez avec un message de succès.
redirect()->with('success', '...') est un raccourci qui pousse une donnée flash vers la destination.
3

Afficher le message dans le layout

Ajoutez l’affichage des messages flash à resources/views/layouts/app.blade.php.
4

Créer la vue de liste

Après enregistrement puis redirection, la page affiche une fois le message « Publication créée. ».

Combinaison avec les erreurs de validation

En cas d’échec de validation, combinez avec back()->withErrors(). Laravel place automatiquement les erreurs en flash data : la variable $errors est disponible dans Blade.
flush() supprime toutes les données de session, y compris l’état de connexion. Utilisez plutôt forget() pour cibler des clés précises.

Prochaines étapes

Validation

Découvrez comment valider les données saisies dans les formulaires.
Dernière modification le 21 août 2026