Maison > cadre php > Laravel > Explication détaillée de la méthode de gestion de session de Laravel (session)

Explication détaillée de la méthode de gestion de session de Laravel (session)

不言
Libérer: 2020-07-13 16:41:28
original
10978 Les gens l'ont consulté

Dans les applications Web, il est nécessaire d'identifier les utilisateurs à travers les requêtes et de sauvegarder les données pour chaque utilisateur, et pour cela, des frameworks comme Laravel fournissent un mécanisme appelé sessions. Cet article vous présentera comment Laravel gère les sessions.

Explication détaillée de la méthode de gestion de session de Laravel (session)

Les sessions peuvent stocker des données (clés et valeurs), Laravel fournit diverses sessions backend, qui peuvent être définies dans config/session.php.

Les sessions de fichiers enregistrent par défaut les sessions dans des fichiers du répertoire storage/framework/sessions/. Dans un environnement de production, nous envisagerons d'utiliser des sessions de base de données, des sessions Redis, etc., mais dans un environnement de développement, il suffit d'utiliser la session de fichiers par défaut.

Sujet d'apprentissage du site Web chinois php : session php (comprenant des images, des vidéos, des cas)

Comment utiliser des sessions dans Laravel

Il existe deux manières principales de gérer des sessions avec Laravel.

La première consiste à transmettre l'instance de requête à l'opération.

Utilisez l'instance Illuminate Session Store.

// 从会话中获取指定的数据
//在没有存在键的情况下,将返回的默认值指定为第二参数
$value = $request->session()->get('key’);
$value = $request->session()->get('key', 'default’);
$value = $request->session()->get('key', function () {
    return 'default';
});

// 获取会话中的所有数据
$data = $request->session()->all();

// 检查指定的数据是否存在于会话中
if ($request->session()->exists('key')) {
    // 存在
}
if ($request->session()->has('key')) {
    // null不存在
}

// 将数据保存到会话
$request->session()->put('key', 'value');
$request->session()->put(['key1' => 'value1', 'key2' => ‘value2']);

// 从会话取得指定的数据后,删除该数据
$value = $request->session()->pull('key', 'default’);

// 从会话中删除指定的数据
$request->session()->forget('key');

// 从会话中删除所有数据
$request->session()->flush();
Copier après la connexion

Une autre façon consiste à utiliser la fonction d'assistance globale session().
Utilisez l'instance Illuminate Session SessionManager.

// 从会话中获取指定的数据
// 在没有存在键的情况下,将返回的默认值指定为第二参数
$value = session('key’);
$value = session('key', 'default');
$value = session('key', function () {
    return 'default';
});
$value = session()->get(‘key');
$value = session()->get('key', 'default');
$value = session()->get('key', function () {
    return 'default';
});

// 取得会话中的全部数据
$data = session()->all();

// 检查指定的数据是否存在于会话中
if (session()->exists('key')) {
    // 存在
}
if (session()->has('key')) {
    // null不存在
}

// 保存数据到会话
session(['key1' => 'value1', 'key2' => ‘value2']);
session()->put(['key1' => 'value1', 'key2' => 'value2']);

// 从会话取得指定的数据后,删除该数据
$value = session()->pull('key', 'default’);

// 从会话中删除指定的数据
session()->forget('key');

// 从会话中删除所有数据
session()->flush();
Copier après la connexion

Jetons un coup d'oeilUn exemple spécifique d'utilisation de sessions dans Laravel

Un exemple très simple

Définissons ce qui suit itinéraires.

routes/web.php

Route::get('/put-data', function () {
    session()->put(['email' => 'user@example.com']);
    return session()->get('email');
});

Route::get(‘/list-data', function () {
    return session()->all();
});
Copier après la connexion

Tout d'abord, lors de l'accès à /put-data dans le navigateur, le premier chemin est exécuté et vous pouvez confirmer que les données ont été enregistrées dans la session.

user@example.com
Copier après la connexion

Ensuite, lors de l'accès à /list-data dans le navigateur, le deuxième chemin sera exécuté et vous pourrez confirmer si les données précédemment enregistrées ont été conservées

{"email":"user@example.com","_previous":{"url":"http:\/\/localhost:8000\/put-data"},"_flash":{"old":[],"new":[]},"_token":"UYcsteOQAj58e9Aay5uNc3V4F0fSpi9VfEBlKhTZ"}
Copier après la connexion

De bien sûr, il existe d'autres données, mais ce sont des données automatiquement enregistrées, Laravel lui-même utilise également des sessions.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers numéros
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal