웹 애플리케이션에서는 요청 전반에 걸쳐 사용자를 식별하고 각 사용자에 대한 데이터를 저장해야 합니다. 이를 위해 Laravel과 같은 프레임워크는 세션이라는 메커니즘을 제공합니다. 이 글에서는 Laravel이 세션을 처리하는 방법을 소개합니다.
세션은 데이터(키와 값)를 저장할 수 있으며, Laravel은 config/session.php에서 설정할 수 있는 다양한 백엔드 세션을 제공합니다.
기본적으로 설정된 파일 세션은 Storage/framework/sessions/ 디렉터리의 파일에 세션을 저장합니다. 프로덕션 환경에서는 데이터베이스 세션, Redis 세션 등의 사용을 고려하지만 개발 환경에서는 기본 파일 세션을 사용해도 충분합니다.
php 중국어 웹사이트 학습 주제: php 세션 (사진, 동영상, 사례 포함)
라라벨에서 세션을 사용하는 방법
라라벨을 사용하여 세션을 운영하는 방법은 크게 두 가지가 있습니다.
하나는 요청 인스턴스를 통해 작업에 전달됩니다.
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();
또 다른 방법은 전역 도우미 함수인 session()을 사용하는 것입니다.
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();
다음을 살펴보겠습니다. Laravel에서 세션을 사용하는 구체적인 예
아주 간단한 예
우리는 다음 경로를 정의합니다.
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(); });
먼저 브라우저에서 /put-data에 접속하면 첫 번째 경로가 실행되어 해당 세션에 데이터가 저장되어 있는 것을 확인할 수 있습니다.
user@example.com
다음으로 브라우저에서 /list-data에 접속하면 두 번째 경로가 실행되어 이전에 저장한 데이터가 유지되었는지 확인할 수 있다.
{"email":"user@example.com","_previous":{"url":"http:\/\/localhost:8000\/put-data"},"_flash":{"old":[],"new":[]},"_token":"UYcsteOQAj58e9Aay5uNc3V4F0fSpi9VfEBlKhTZ"}
그 밖에도 물론 다른 데이터도 있지만 이것들은 자동으로 저장되는 데이터이고, Laravel 자체도 세션을 사용합니다.
위 내용은 Laravel의 세션 처리 방법(session)에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!