第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
- user_id を Session に書く(ログイン風)
- 別Actionで読み出して表示
- ログアウトで消す
- 無いときは一覧を見せない