Laravel セッション(session)を利用する

2020年2月3日

PHP

Laravelにおけるセッション(session)機能を試してみます。

 

セッション自体をはじめて理解したいという方向け

PHPでセッションを利用する

 

 

まず .envファイルのSESSION_DRIVERを確認します。バージョン6.xでは、セッションデータの保存先としてcookieがデフォルトとなっています。

他にもfiledatabasememcachedredisarrayを設定することができます。本記事ではデフォルトのcookieとdatabaseを扱ってみます。

 

 

下記イラストのようなセッション機能による簡単な挙動を作成してみます。なお必要最低限の処理のみでフォーム未入力チェックなどは実装していませんのであしからず。

 

 

 

適当なコントローラーを作成します。

 

web.phpに下記コードを追記します。

routes/web.php

 

生成されたコントローラーにindex()・store()・delete()の3つのメソッドを追記します。

app/Http/Controllers/SessionController.php

16行目

フォームから受け取ったデータを、「name」という名前のキー(key)に対する値(value)としてセッションに保存しています。保存した値は「name」をキーとして再び取り出すことができます。

 

17行目

flashメソッドを利用して「現在と直後のHTTPリクエストの間だけ」(参照ページから抜粋)有効となるデータを保存しています。リダイレクト先のページでリロードするとこのmessageキーに紐付けられたセッションのデータは削除されます。※なお本記事ではリロードせずに自動で消えるようにしています。

 

24行目

nameキーに紐付けられたセッションのデータを破棄しています。

 

 

以下フォーム画面とセッションのデータ削除完了画面としてのテンプレートを用意します。

 

resources/views/session/index.blade.php

15〜19行目

コントローラー側で説明したflashメソッドによるフラッシュデータを表示させています。ページ自体をリロードするとこのデータは破棄されますが、今回はjQueryを利用してフェードアウトさせています。

 

関連記事

フェードイン・フェードアウト

 

21〜26行目

nameキーに対応したセッションのデータを判定し表示させています。

 

 

resources/views/session/delete.blade.php

 

 

 

データベースを利用する


 

すでにMySQL等のデータベースに接続していることを前提に話を進めます。

 

まず .envファイルのSESSION_DRIVERにdatabaseに設定します。

 

.envを編集した場合は、キャッシュをクリアにするため下記コマンドを実行します。

 

次にセッション用のテーブルを生成するマイグレーションファイルを作成します。

 

マイグレーションファイルが生成されているのが確認できます。

database/migrations/2020_02_03_125312_create_sessions_table.php

 

 

マイグレーションを実行します。

 

sessionsテーブルが生成されたのが確認できます。

 

 

再度セッションにデータを保存するとテーブルにデータが登録されているのが確認できます。

※一部省略してます。

 

 

参照ページ


 

Laravel 6.x HTTPセッション

 

 

 

LINEで送る
Pocket

定番本
定期
Copyright © 2020 思考の葉 All Rights Reserved.  プライバシーポリシー