Laravelでセッション設定

ページ間のデータの受け渡しには、セッションが必要です。セッションによりバラバラのページが同じ情報を共有し、ユーザーに快適な環境を提供してくれます。今日は、LaravelのSessionクラスについて調べてみたいと思います。

セッションドライバー

1. Laravelには下記の6つのセッションドライバーが用意されています。それでは、順に見てみましょう。セッションは、application/config/session.phpファイルの各項目で設定します。

  • クッキーセッション
    クッキーベースのセッションは軽く、快適に動作しますが、クッキーは4kbの容量しかないので、より多くの情報をセッションに保存したい場合には、向いていません。 Laravelのデフォルトのセッションドライバーはクッキーが指定されています。config/session.phpファイルの19行目に下記のように記述されています。
    ‘driver’ => ‘cookie’
  •  ファイルシステムセッション
    セッションにファイルを使用する場合は、 下記のように記述します。ファイルシステムはapplication/strage/sessionsディレクトリに保存されます。
    ‘driver’ => ‘file’
  • データベースセッション
    データベースセッションを使用するには、セッションテーブルを作成する必要があります。次の章で、セッションテーブルの作成方法を記述します。
    ‘driver’ => ‘database’
  • Memcacheセッション
    Memcacheセッションを使うには、Memcacheサーバーの設定を行う必要があります。
    ‘driver’ => ‘memcached’
  • Redisセッション
    Redisセッションを使うには、Redisサーバーの設定を行う必要があります。
    ‘driver’ => ‘redis’

MySQLでセッションテーブルの作成

2. それでは、セッションドライバーをデータベースに設定したいと思います。phpMyAdminを起動したら、①SQLタブをクリックします。

3. 下記のSQL文を②コピー&ペーストして、③実行ボタンをクリックすればsessionsテーブルは完成します。

CREATE TABLE `sessions` (
 `id` VARCHAR(40) CHARACTER SET utf8 NOT NULL,
 `last_activity` INT(10) NOT NULL,
 `data` TEXT CHARACTER SET utf8 NOT NULL,
 PRIMARY KEY (`id`)
 );

4. 下記のようにsessionsテーブルが完成しました。

5. config/session.phpの19行目を下記のように修正します。

‘driver’ => ‘database’

セッション使用法

6. セッションは、Sessionクラスのputメソッドで、アイテム(セッションデータ)を保存し、getメソッドで、保存したアイテムを取得します。

Session::put(セッションキー,値);

Session::get(セッションキー);

7. 下記に下記に代表的なSessionクラスのメソッドとプロパティを記述しておきます。

メソッド

  • put(セッションキー,値)
    このメソッドは、セッションにアイテムを保存するときに使用します。
  • get(セッションキー)
    このメソッドは、セッションからアイテムを取得するときに使用します。セッションアイテムが存在しないときは、null値が返されますが、第2引数にデフォルト値の指定することも出来ます。
  • has(セッションキー)
    このメソッドは、指定したセッションが存在するかどうかの確認に使用します。
  • forget(セッションキー)
    このメソッドは、指定したセッションを削除するときに使用します。
  • flush()
    このメソッドは、全てのセッションを削除するときに使用します。
  • flash(セッションキー,値)
    flashメソッドは、次のセッションの後(ページ遷移後)に消去されるアイテムを保存します。これは、ステータスメッセージやエラーメッセージなどの一時的なデータを保存するのに利用されます。
  • reflash()
    flashメソッドでは、次のリクエストで消えますが、reflashメソッドを使うことにより再度全てのアイテムをその次のセッションまで保持することが出来ます。
  • keep(セッションキー)
    keepメソッドは、指定したフラッシュセッションを再度次のセッションまで保持します。尚、引数に配列を指定することで、複数のアイテムを保持することが出来ます。全てのフラッシュセッションアイテムを再度次のセッションまで保持するときにreflashメソッド、アイテムを指定して再度次のセッションまで保持するときにkeepメソッドを使います。
  • regenerate()
    このメソッドは、セッションに新しいランダムなIDを割り付けます。
  • load()
    このメソッドは、現在のリクエストに対するセッションをロードします。
  • sweep()
    このメソッドは、時間切れのセッションをクリーンアップします。
  • token()
    このメソッドは、セッションデータに保存されているCSRFトークンを取得します。

プロパティ

  • $driver
    セッションベイロードを取得/保存するために使用されるセッションドライバー
  • $exists
    ストレージにセッションが既に存在しているか
  • $session
    ドライバーに保存されたセッションの配列

本日は以上です。

このエントリーを含むはてなブックマーク Buzzurlにブックマーク livedoorクリップ Yahoo!ブックマークに登録

トラックバック&コメント

この投稿のトラックバックURL:

トラックバック

コメント

  1. HiroKws より:

    前回の記事に再コメントさせていただきましたが、keep()は通常のセッションに移すのではなく、指定した項目をフラッシュデーターとして、再度登録するメソッドでした。
    reflash()との違いは、フラッシュデーターを全部保存するのか、それとも指定した項目のみ保存するのかの違いだけです。
    お手数をかけますが、修正をお願いします。

    • nakada より:

      コメントありがとうございます。
      修正しておきました。
      WinRoad徒然草管理人 中田


コメントをどうぞ

このページの先頭へ