第7章
第7章 · 初心者向け

Session

Sessionは「サーバー側のメモ帳」。ログイン状態の保存に使います。

1. Sessionとは

Session=その人専用の、サーバー側の一時メモ
たとえ

コインロッカーです。ブラウザは鍵(Cookie)だけ持ち、中身はサーバー側に置きます。

2. Sessionの取得

$session = $this->request->getSession();
$userId = $session->read('user_id');

3. Sessionへの書き込み

$this->request->getSession()->write('user_id', 10);
$this->request->getSession()->write('Auth.User', [
    'id' => 10,
    'name' => 'Taro',
]);

Auth.User のように点で階層を作れます。

4. Sessionの存在チェック

if ($this->request->getSession()->check('user_id')) {
    // メモがある
}

5. Sessionの削除

$session->delete('user_id'); // 1項目消す
$session->destroy();         // 全部捨てる(ログアウト向き)

6. ログイン情報をSessionで扱う考え方

ログイン成功 → ユーザー情報を書く / 以降のページ → 読み出して「ログイン中」と判断
// ログイン成功時
$session->write('Auth.User', $user);

7. ログイン状態の判定

public function isLoggedIn(): bool
{
    return $this->request->getSession()->check('Auth.User.id');
}
補足

本格アプリでは認証プラグインを使うことも多いです。でも中身のイメージは「Sessionに誰かを覚えている」です。

第7章 やってみよう

EXERCISE
  1. user_id を Session に書く(ログイン風)
  2. 別Actionで読み出して表示
  3. ログアウトで消す
  4. 無いときは一覧を見せない