グッズ

Laravelのセッションとは何ですか、設定と使用例

Laravel セッションを使用すると、情報を保存し、Web アプリケーションのリクエスト間で情報を交換できます。 

これらは、現在のユーザーのデータを永続化する簡単な方法です。 このチュートリアルでは、Laravel でセッションを操作する基本を説明します。

Laravelセッションとは

Laravel では、セッションは情報を保存し、ユーザーからのリクエストを正しく処理する方法です。 ユーザーが Laravel アプリケーションを起動すると、そのユーザーのセッションが自動的に開始されます。 セッション データはサーバーに保存され、一意の識別子を持つ小さな Cookie がユーザーのブラウザーに送信され、セッションが識別されます。

セッションを使用して、複数のページまたはリクエストで使用するデータを保存できます。 たとえば、セッションをユーザー認証に使用したり、セッション中に使用する他の情報をアプリケーションに保存したりできます。

Laravel でのセッション構成

Laravel でセッションを使用するには、まずファイルでセッションを有効にする必要があります config/session.php 構成の。 このファイルでは、セッションに関連する構成パラメーターを設定できます。 たとえば、セッションの期間、セッション データの保存に使用するドライバー、セッション データの保存場所などです。 

このファイルには、次の構成オプションがあります。
  • ドライバー: プレセッションドライバーを指定しますdefi使用する準備ができて。 Laravel は、ファイル、クッキー、データベース、apc、memcached、redis、dynamodb、array などのいくつかのセッションドライバーをサポートしています。
  • 一生: セッションが有効であると見なされる分数を指定します。
  • 終了時に期限切れになる: true に設定すると、ユーザーのブラウザを閉じるとセッションが期限切れになります。
  • 暗号化する: true は、フレームワークがセッション データを保存する前に暗号化することを意味します。
  • ファイル: ファイル セッション ドライバが使用されている場合、このオプションはファイルの保存場所を指定します。
  • 接続: データベース セッション ドライバが使用されている場合、このオプションは使用するデータベース接続を指定します。
  • テーブル: データベース セッション ドライバを使用する場合、このオプションは、セッション データの保存に使用するデータベース テーブルを指定します。
  • 宝くじ: セッション ID Cookie 値をランダムに選択するために使用される値の配列。
  • クッキー: このオプションは、セッション ID を格納するために使用される Cookie の名前を指定します。 path、domain、secure、http_only、および same_site オプションは、セッションの Cookie 設定を構成するために使用されます。

以下はファイルの例です sessions.php セッション継続時間 120 秒、ディレクトリに格納されたファイルの使用 framework/sessions:

<?php

use Illuminate\Support\Str;

return [
    'driver' => env('SESSION_DRIVER', 'file'),
    'lifetime' => env('SESSION_LIFETIME', 120),
    'expire_on_close' => false,
    'encrypt' => false,
    'files' => storage_path('framework/sessions'),
    'connection' => env('SESSION_CONNECTION', null),
    'table' => 'sessions',
    'store' => env('SESSION_STORE', null),
    'lottery' => [2, 100],
    'cookie' => env(
        'SESSION_COOKIE',
        Str::slug(env('APP_NAME', 'laravel'), '_').'_session'
    ),
    'path' => '/',
    'domain' => env('SESSION_DOMAIN', null),
    'secure' => env('SESSION_SECURE_COOKIE'),
    'http_only' => true,

    'same_site' => 'lax',

];

ファイル内の環境変数を使用してセッションを構成することもできます .env. たとえば、データベース セッション ドライバーを使用してセッション データをセッション テーブルに格納するには、MySQL タイプの DB を使用して、次の環境変数を設定できます。

SESSION_DRIVER=database
SESSION_LIFETIME=120
SESSION_CONNECTION=mysql
SESSION_TABLE=sessions

Laravel セッションのセットアップ

Laravel でセッション データを操作するには、次の XNUMX つの方法があります。 

  • を使用してhelper global session;
  • Session ファサードの使用;
  • 1つを通して Request instance

これらのすべての場合において、セッションに保存したデータは、セッションが期限切れになるか手動で破棄されるまで、同じユーザーによる後続のリクエストで使用できます。

イノベーションニュースレター
イノベーションに関する最も重要なニュースをお見逃しなく。 メールで受け取るにはサインアップしてください。

グローバル セッション ヘルパー

Laravelでは、関数を使用して Global Session Helper これは、フレームワークによって提供されるセッション サービスにアクセスする便利な方法です。 アプリケーションのセッションからデータを保存および取得できます。 使用方法の例を次に示します。 session helper:

// Store data in the session
session(['key' => 'value']);

// Retrieve data from the session
$value = session('key');

// Remove data from the session
session()->forget('key');

// Clearing the Entire Session
session()->flush();

pre 値を渡すこともできますdefi関数の XNUMX 番目の引数として nite を指定する session指定されたキーがセッションで見つからない場合に返されます。

$value = session('key', 'default');

のインスタンス Session Request

Laravel では、セッション リクエスト インスタンスは、HTTP リクエストを表し、リクエスト メソッド (GET、POST、PUT など)、リクエスト URL、リクエストのヘッダー、リクエスト ボディなどのリクエストに関する情報を含むオブジェクトを指します。 . また、この情報を取得および操作するために使用できるさまざまなメソッドも含まれています。

通常、のインスタンスにアクセスします Session Request 変数を通して $request Laravel アプリケーションで。 たとえば、ヘルパー関数を使用してリクエスト インスタンスを介してセッションにアクセスできます。 session().

use Illuminate\Http\Request;

class ExampleController extends Controller
{
   public function example(Request $request)
   {
       // Store data in the session using the put function
       $request->session()->put('key', 'value');

       // Retrieve data from the session using the get function
       $value = $request->session()->get('key');

       // Check if a value exists in the session using the has function:
       if ($request->session()->has('key')) {
           // The key exists in the session.
       }

       // To determine if a value exists in the session, even if its value is null:
       if ($request->session()->exists('users')) {
           // The value exists in the session.
       }

       // Remove data from the session using the forget function
       $request->session()->forget('key');
    }
}

この例では、変数  $request クラスのインスタンスです Illuminate\Http\Request、現在の HTTP 要求を表します。 関数 session リクエストインスタンスはクラスのインスタンスを返します Illuminate\Session\Store、セッションを操作するためのさまざまな機能を提供します。

Ercole Palmeri

イノベーションニュースレター
イノベーションに関する最も重要なニュースをお見逃しなく。 メールで受け取るにはサインアップしてください。

最近の記事

カターニア総合病院での Apple ビューアによる拡張現実への革新的な介入

Apple Vision Pro 商用ビューアを使用した眼形成手術がカターニア総合病院で行われました。

3月2024

子供のためのぬり絵の利点 - すべての年齢層のための魔法の世界

ぬり絵を通じて細かい運動能力を発達させることで、子供たちは書くなどのより複雑なスキルを習得できるようになります。色…

2月2024

未来はここにあります: 海運業界が世界経済をどのように変革しているか

海軍部門は真の世界経済大国であり、150 億市場に向けて舵を切り続けています...

1月2024

パブリッシャーと OpenAI が人工知能によって処理される情報の流れを規制する契約に署名

先週の月曜日、フィナンシャル・タイムズ紙はOpenAIとの契約を発表した。 FT は世界クラスのジャーナリズムにライセンスを供与しています…

4月30 2024

あなたの言語でイノベーションを読む

イノベーションニュースレター
イノベーションに関する最も重要なニュースをお見逃しなく。 メールで受け取るにはサインアップしてください。

Seguici