Maison  >  Article  >  cadre php  >  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)

不言
不言original
2018-12-27 11:29:2810876parcourir

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();

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();

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();
});

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

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"}

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!

Déclaration:
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