0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Laraveのセッション利用【個人的なお勉強アウトプット】

Last updated at Posted at 2022-04-12

参考図書

セッションとは?

クライアントとサーバーの接続維持のための仕組み。
例えば、ログインしている状態の保持、カート情報の保持とか

もともとWebで使われている技術は連続した接続を考えていない。
それを、クッキーとデータベースを利用して実現している。
クライアントごとに異なるIDをクッキーとして保管する(セッションID)。
そのセッションIDに関連付けてデータベースに保存する。
セッションから情報を取り出すときは、クライアントのセッションIDをつかってデータベースからデータを検索して取り出している。

Laravelのセッション利用

クッキーとデータベースを組み合わせてセッション管理をするのが基本。
Laravelはデータベースの他に、ファイルやメモリキャッシュなどをつかってセッションを保存する手段をもっている。
デフォルトではファイルの利用。とはいえ本格稼働時にはデータベースにしたほうがよい。
ファイルだと、クライントごとに作成されて数が膨大になるし、セッションごとに異なるファイルを読み書きするため、処理速度もそれほど速くない。

セッション操作の基本

値の保存

<Request>->session()-put(キー,値)

値の取得

$変数 = <Request>->session()->get(キー);

実例

フォームからテキストを送信するとセッションに保存して、保存された値をsession_dataに表示する

resources/views/hwllo/session.blade.php
@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
app/Http/Controllers/HelloController.php
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');
}

ルート情報の記載

routes/web.php
Route::get('hello/session', 'App\Http\Controllers\HelloController@ses_get');
Route::post('hello/session', 'App\Http\Controllers\HelloController@ses_put');
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?