セッションは、サーバー=クライアント間の接続を維持し、個々のクライアントごとにサービスや情報を保持する技術です。
当記事でセッションの基本的な使い方をマスターしましょう。
セッションについて
アプリケーション開発では、「クライアント=サーバー間の接続を維持する仕組み」が必要になります。
以下のようなシステムでセッションが使われています。
- ログイン機能
- アクセスカウンター
- ショッピングカート
ログイン機能ではページが切り替わっても、ログインしている状態をキープすることができます。アクセスカウンターはページが切り替わっても、アクセス数はリセットされずに加算されます。ショッピングカートではページが切り替わっても、商品はカートに入ったままとなります。
セッションを利用する
セッションの基本操作はシンプルです。実際2つの操作しかしかありません。それが以下の二つになります。
- 値に名前を付けて保存する
- 名前を指定して値を取得する
値を保存する
1 |
Request->session()->put(キー,値); |
値を取得する
1 |
$変数=Request->session()->get(キー); |
非常に簡単で単純です。セッションは、キーの文字列と保存する値がセットとなります。保存するときも取り出すときも、常にキーを使用して値の読み書きを行います。
セッション利用アクションを作成する
セッションを使用するアクションを作成してみましょう。LaravelControllerに「session」というアクションを追加します。
最初に画面表示用のテンプレートを作成します。view内に「laravel」フォルダ内に、session.blade.phpを作成してください。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
@extends('layouts.laravelapp') @section('title','Session') @section('menubar') @parent セッションページ @endsection @section('content') <p>{{$session}}</p> <form action="/laravel/session" method="post"> {{ csrf_field() }} <input type=text" name="input"> <input type="submit" value="send"> </form> @endsection |
$sessionという変数とname=inputという入力フィールドのあるフォームがあります。一連の流れとしましては、フォームからテキストを送信すると、それをセッションに保存し、保存された値を$sessionに代入表示する。
フォームの送信先は/laravel/sessionです。
LaravelControllerのアクション作成
コントローラにアクションを作成します。LaravelControllerに2つのアクションメソッドを追加してください。
1 2 3 4 5 6 7 8 9 10 11 |
public function ses_get(Request $request) { $sesdata = $request->session()->get('msg'); return view('laravel.session',['session' => $sesdata]); } public functioin ses_put(Request $request) { $msg = $request->input; $request->session()->put('msg',$msg); return redirect('laravel/session'); } |
ルートの記述
ルートを記述しましょう。web.phpを以下のように記述してください。
1 2 |
Route::get('laravel/session','laravelController@ses_get'); Route::post('laravel/session','laravelController@ses_put'); |
実際にlaravel/sessionにアクセスしてみてください。そして、何かテキストを書いて送信してください。セッションに保存され、テキストが記憶されて表示されているでしょう。