Les sessions Laravel
Sommaire
- 1- Objectifs
- 2- Présentation
- 3- Utilisation de la session
- 3.1- Stockage d'un élément dans la session
- 3.2- Pousser une valeur sur une valeur de session de baie
- 3.3- Récupération d'un élément de la session
- 3.4- Récupérer un article ou renvoyer une valeur par défaut
- 3.5- Récupérer un élément et l'oublier
- 3.6- Récupération de toutes les données de la session
- 3.7- Déterminer si un élément existe dans la session
- 3.8- Suppression d'un élément de la session
- 3.9- Suppression de tous les éléments de la session
- 3.10- Régénérer l'ID de session
- 4- Pilote de session mise en disposition
- 5- Retrouver des données
- 6- Activité
- 6.1.1- Sommaire du cours Laravel
Les sessions Laravel
-
Objectifs
- Etre capable d’utiliser les sessions dans Laravel
-
Présentation
- Le système des sessions est un mécanisme bien connu en PHP. Il permet de partager des données individuelles, pour chaque utilisateur, d’une page à une autre.
- Étant donné que les applications pilotées par HTTP sont sans état, les sessions fournissent un moyen de stocker des informations sur l’utilisateur à travers les demandes. Laravel est livré avec une variété de back-ends de session disponibles pour une utilisation via une API propre et unifiée.
- Avec les sessions, il est possible de rendre persistants des états, par exemple pour maintenir la connexion d’un utilisateur une fois qu’il s’est authentifié. Ou alors pour partager des données plus volatiles le temps de quelques pages.
- Dans cet article, nous verrons comment nous pouvons utiliser les méthodes d’assistance de session dans Laravel.
-
Utilisation de la session
- La session peut être accédée de plusieurs manières, via la méthode session de la requête HTTP , la façade Session ou la fonction session d’assistance.
- Lorsque l’assistant session est appelé sans arguments, il renverra tout l’objet de session.
- Par exemple:
session()->regenerate();
-
Stockage d’un élément dans la session
- Il existe deux méthodes différentes dans Laravel Framework que vous pouvez utiliser pour définir la valeur dans la session. Le premier utilise la fonction d’assistance de session
session()
. Session::put('key', 'value');
session(['key' => 'value']);
- Deuxièmement, vous pouvez utiliser l’ instance
Request
pour définir la valeur dans la session. $request-> session () -> put ([ 'key' => 'value' ]);
-
Pousser une valeur sur une valeur de session de baie
Session::push('user.teams', 'developers');
-
Récupération d’un élément de la session
$value = Session::get('key');
$value = session('key');
-
Récupérer un article ou renvoyer une valeur par défaut
$value = Session::get('key', 'default');
$value = Session::get('key', function() { return 'default'; });
-
Récupérer un élément et l’oublier
$value = Session::pull('key', 'default');
-
Récupération de toutes les données de la session
- Si vous souhaitez récupérer toutes les données disponibles dans la session, vous pouvez utiliser la méthode all.
$data = Session::all();
-
Déterminer si un élément existe dans la session
- Pour déterminer si une valeur est présente dans la session, vous pouvez utiliser la méthode has.
- La méthode has renvoie true si la valeur est présente et null si la valeur n’existe pas.
if (Session::has('users'))
{
//
}- ou
-
Suppression d’un élément de la session
- La méthode
forget
supprimera l’élément spécifié de la session - Si vous souhaitez d’abord obtenir la valeur de l’élément, puis supprimer cet élément de la session, vous pouvez utiliser la méthode
pull
- La différence entre la méthode
forget()
et la méthodepull()
est que: - La méthode
forget()
ne retournera pas la valeur de la session. - La méthode
pull()
la retournera et supprimera cette valeur de la session. Session::forget('key');
-
Suppression de tous les éléments de la session
- Si vous souhaitez supprimer tous les éléments de la session, vous pouvez utiliser la méthode
flush()
: - Parfois, vous souhaiterez peut-être stocker des éléments dans la session uniquement pour la demande suivante. Vous pouvez le faire en utilisant la méthode flash.
- Les données stockées dans la session à l’aide de cette méthode ne seront disponibles que lors de la requête HTTP suivante, puis seront supprimées.
- Les données Flash sont principalement utiles pour les messages d’état de courte durée.
Session::flush();
-
Régénérer l’ID de session
- Si vous souhaitez régénérer tous les ID de la session, vous pouvez utiliser la méthode
regenerate()
. Session::regenerate();
- ou
$request->session()-> régénérer();
-
Pilote de session mise en disposition
- Le gestionnaire de sessions de Laravel supporte différents pilotes de gestions de session
- Les différents pilotes mis à disposition en session laravel sont les suivants:
- File : Ici, les sessions sont stockées dans le répertoire – storage / framework / sessions.
- Cookie : Les cookies sécurisés et cryptés sont l’endroit où les sessions sont stockées.
- Base de données : les sessions ici sont stockées dans une base de données relationnelle.
- Tableau : Un tableau PHP est l’endroit où les sessions sont stockées et elles ne seront plus conservées.
- Memcached/Redis : Ce sont des magasins et des sessions rapides et basés sur le cache.
- Le pilote par défaut de la session est défini sur fichier lorsque vous créez une nouvelle application Laravel. Le lecteur de fichiers est idéal pour le développement local, mais pour une application de production, vous devez utiliser Redis ou Memcached pour améliorer les performances de session.
- Vous pouvez modifier les paramètres du pilote de
session
à partir du fichier de configuration de la session située dansconfig/session.php
. -
Retrouver des données
- Retrouver des données stockées en session se fait à l’aide de la fonction assistante session suivie de la méthode get.
- Il est possible de définir une valeur par défaut si la donnée n’existe pas en la passant en second paramètre de la méthode get.
- La méthode all permet quant à elle de récupérer toutes les données de la session.
-
Activité
- Étape 1 – Créez un contrôleur appelé SessionController.
- Étape 4 – Visitez l’URL suivante pour définir les données en session : http://localhost:8000/session/set .
Dans laravel, le fichier de configuration de session est stocké dans ‘
app/config/session.php
‘.
if ($request-> session() -> has ( 'key' ) {
//
}
<?php
use Illuminate\Support\Str;
return [
/*
|--------------------------------------------------------------------------
| Default Session Driver
|--------------------------------------------------------------------------
|
| This option controls the default session "driver" that will be used on
| requests. By default, we will use the lightweight native driver but
| you may specify any of the other wonderful drivers provided here.
|
| Supported: "file", "cookie", "database", "apc",
| "memcached", "redis", "dynamodb", "array"
|
*/
'driver' => env('SESSION_DRIVER', 'file'),
/*
// Retrouver des données en indiquant la clé
$key = session()->get('key');
$array = session()->get('one-two-three');
// Valeur par défaut si la clé n'est pas trouvée
$key = session()->get('key', 'default-value');
// Toutes les valeurs de la session
$all = session()->all();
Étape 2 – Copiez le code suivant dans un fichier à app/Http/Controllers/SessionController.php.
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Requests;
use App\Http\Controllers\Controller;
class SessionController extends Controller {
public function accessSessionData(Request $request) {
if($request->session()->has('my_name'))
echo $request->session()->get('my_name');
else
echo 'No data in the session';
}
public function storeSessionData(Request $request) {
$request->session()->put('my_name','Virat Gandhi');
echo "Data has been added to session";
}
public function deleteSessionData(Request $request) {
$request->session()->forget('my_name');
echo "Data has been removed from session.";
}
}
Étape 3 – Ajoutez les lignes suivantes dans le fichier app/Http/routes.php .
Route::get('session/get','SessionController@accessSessionData');
Route::get('session/set','SessionController@storeSessionData');
Route::get('session/remove','SessionController@deleteSessionData');
Activité inspirée du site : https://www.tutorialspoint.com.