12 Les Bases de Laravel 11 : Sessions

Anis MarrouchiAI Bot
Par Anis Marrouchi & AI Bot ·

Chargement du lecteur de synthèse vocale...

Puisque les applications basees sur HTTP sont sans etat, les sessions fournissent un moyen de stocker des informations sur l'utilisateur a travers plusieurs requetes. Ce tutoriel couvre les bases de la gestion des sessions dans Laravel 11.

Configuration

Le fichier de configuration des sessions de votre application est stocke dans config/session.php. Par defaut, Laravel utilise le pilote de session database. L'option de configuration du pilote de session definit ou les donnees de session seront stockees pour chaque requete. Laravel inclut plusieurs pilotes :

  • file : Les sessions sont stockees dans storage/framework/sessions.
  • cookie : Les sessions sont stockees dans des cookies securises et chiffres.
  • database : Les sessions sont stockees dans une base de donnees relationnelle.
  • memcached / redis : Les sessions sont stockees dans l'un de ces stockages rapides bases sur le cache.
  • dynamodb : Les sessions sont stockees dans AWS DynamoDB.
  • array : Les sessions sont stockees dans un tableau PHP et ne seront pas persistees. Ce pilote est principalement utilise pendant les tests.

Prerequis du Pilote

Base de Donnees

Lors de l'utilisation du pilote de session database, vous avez besoin d'une table de base de donnees pour contenir les donnees de session. Si vous n'avez pas de table sessions, utilisez la commande Artisan make:session-table pour generer cette migration :

php artisan make:session-table
php artisan migrate

Redis

Avant d'utiliser les sessions Redis, installez l'extension PHP PhpRedis via PECL ou le package predis/predis via Composer. Pour plus d'informations, consultez la documentation Redis de Laravel.

Interagir avec la Session

Recuperer des Donnees

Il existe deux principales facons de travailler avec les donnees de session dans Laravel : l'helper global session et via une instance Request.

// Utilisation de l'instance Request
session()->get('key');
 
// Utilisation de l'helper global session
$value = session('key');
$value = session('key', 'default');
session(['key' => 'value']);

Recuperer Toutes les Donnees de Session

Utilisez la methode all pour recuperer toutes les donnees de session :

$data = $request->session()->all();

Recuperer une Partie des Donnees de Session

Utilisez les methodes only et except pour recuperer un sous-ensemble des donnees de session :

$data = $request->session()->only(['username', 'email']);
$data = $request->session()->except(['username', 'email']);

Determiner si un Element Existe dans la Session

Utilisez les methodes has, exists et missing pour verifier si un element est present dans la session :

if ($request->session()->has('users')) {
  // ...
}
if ($request->session()->exists('users')) {
  // ...
}
if ($request->session()->missing('users')) {
  // ...
}

Stocker des Donnees

Utilisez la methode put ou l'helper global session pour stocker des donnees dans la session :

$request->session()->put('key', 'value');
session(['key' => 'value']);

Ajouter aux Valeurs de Tableau de Session

Utilisez la methode push pour ajouter une nouvelle valeur a une valeur de tableau de session :

$request->session()->push('user.teams', 'developers');

Recuperer et Supprimer un Element

Utilisez la methode pull pour recuperer et supprimer un element de la session en une seule instruction :

$value = $request->session()->pull('key', 'default');

Incrementer et Decrementer les Valeurs de Session

Utilisez les methodes increment et decrement pour les donnees de session contenant des entiers :

$request->session()->increment('count');
$request->session()->decrement('count');

Donnees Flash

Utilisez la methode flash pour stocker des elements dans la session pour la prochaine requete :

$request->session()->flash('status', 'Tache reussie !');
$request->session()->reflash();
$request->session()->keep(['username', 'email']);

Supprimer des Donnees

Utilisez la methode forget pour supprimer une donnee de la session ou la methode flush pour supprimer toutes les donnees :

$request->session()->forget('name');
$request->session()->forget(['name', 'status']);
$request->session()->flush();

Regenerer l'ID de Session

Utilisez la methode regenerate pour regenerer l'ID de session :

$request->session()->regenerate();

Blocage de Session

Pour utiliser le blocage de session, votre application doit utiliser un pilote de cache qui prend en charge les verrous atomiques. Utilisez la methode block pour limiter les requetes concurrentes pour une session donnee :

Route::post('/profile', function () {
  // ...
})->block($lockSeconds = 10, $waitSeconds = 10);

Ajouter des Pilotes de Session Personnalises

Implementer le Pilote

Si aucun des pilotes de session existants ne correspond aux besoins de votre application, Laravel permet d'ecrire votre propre gestionnaire de session. Votre pilote de session personnalise doit implementer l'interface integree PHP SessionHandlerInterface.

Pour plus d'informations detaillees, consultez la documentation officielle des Sessions Laravel.

En savoir plus sur la gestion des sessions dans Laravel 11 et ameliorez l'experience utilisateur de votre application. Consultez la documentation officielle pour plus d'exemples et d'utilisation avancee.


Vous voulez lire plus de tutoriels? Découvrez notre dernier tutoriel sur Boostez vos applications web : Guide du débutant pour le SDK JavaScript Voice de Twilio.

Discutez de votre projet avec nous

Nous sommes ici pour vous aider avec vos besoins en développement Web. Planifiez un appel pour discuter de votre projet et comment nous pouvons vous aider.

Trouvons les meilleures solutions pour vos besoins.

Articles connexes

10 Les Bases de Laravel 11 : Bundling d'Assets

Apprenez les essentiels du bundling d'assets dans Laravel 11 avec Vite, couvrant l'installation, la configuration et des exemples pratiques pour le developpement web.

10 min read·

9 Les Bases de Laravel 11 : Templates Blade

Apprenez les essentiels des Templates Blade dans Laravel 11, en vous concentrant sur les fonctionnalites cles et des exemples pratiques pour ameliorer vos competences en developpement web.

10 min read·