参考図書
セッションとは?
クライアントとサーバーの接続維持のための仕組み。
例えば、ログインしている状態の保持、カート情報の保持とか
もともとWebで使われている技術は連続した接続を考えていない。
それを、クッキーとデータベースを利用して実現している。
クライアントごとに異なるIDをクッキーとして保管する(セッションID)。
そのセッションIDに関連付けてデータベースに保存する。
セッションから情報を取り出すときは、クライアントのセッションIDをつかってデータベースからデータを検索して取り出している。
Laravelのセッション利用
クッキーとデータベースを組み合わせてセッション管理をするのが基本。
Laravelはデータベースの他に、ファイルやメモリキャッシュなどをつかってセッションを保存する手段をもっている。
デフォルトではファイルの利用。とはいえ本格稼働時にはデータベースにしたほうがよい。
ファイルだと、クライントごとに作成されて数が膨大になるし、セッションごとに異なるファイルを読み書きするため、処理速度もそれほど速くない。
セッション操作の基本
値の保存
<Request>->session()-put(キー,値)
値の取得
$変数 = <Request>->session()->get(キー);
実例
フォームからテキストを送信するとセッションに保存して、保存された値をsession_data
に表示する
@section(`content`)
<p>{{$session_data}}</p>
<form action="/hello/session" method="post">
@csrf
<input type="text" name="input">
<input type="submit" name="send">
</form
@endsection
public function ses_get(Request $request){
$ses_data = $request->session()->get('msg');
return view('hello.session', ['session_data' => $sesdata]);
}
public function ses_put(Request $request){
$msg = $request->input;
$request->session()->put('msg', $msg);
return redirect('hello/session');
}
ルート情報の記載
Route::get('hello/session', 'App\Http\Controllers\HelloController@ses_get');
Route::post('hello/session', 'App\Http\Controllers\HelloController@ses_put');