topic: session-cookie (session / cookie / login / CSRF) / ch02
ch02 — `session_start()` と `$_SESSION` の基本
学習目標
session_start()で Session を開始できる$_SESSION['key'] = valueで値を保存し、$_SESSION['key']で取り出せる- CLI 採点用の session スタブ (use_cookies=0 / 固定 session_id) を理解して使える
所要時間
スライド 5 分 + ドリル 2 問 = 25 分
ドリル
| no | 内容 |
|---|---|
| 01 | $_SESSION['name'] に '太郎' を保存して echo |
| 02 | 同一プロセス内で $_SESSION['count'] を 3 回 increment して最終値を出力 |
本物のセッション動作で確認したい場合
cd topics/13-session-cookie/ch02-session-basic/drill/01-set-and-get/
php -S localhost:8000 answer.php
ブラウザで http://localhost:8000/ を開く。リロードすると Session が保持されていることを開発者ツール (Application → Cookies) で PHPSESSID として確認できる。
演習問題の詳細
この章の演習問題の内容を読めます。実際に手元で解くには教材リポジトリを clone してください。
ドリル 01 — `$_SESSION['name']` への代入と取得
問題
$_SESSION['name'] に '太郎' を代入し、その値を 1 行で出力する PHP を書いてください。
採点ランナーは CLI 直実行なので、answer.php の冒頭で session 用スタブ (use_cookies=0 / 固定 session_id) を入れて Session を擬似化してください。スタブは starter.php に最初から書いてあります。
期待される出力:
太郎
採点
php scripts/grade.php topics/13-session-cookie/ch02-session-basic/drill/01-set-and-get/
ヒント
// 採点用スタブの後に、こう書く
$_SESSION['name'] = '太郎';
echo $_SESSION['name'] . "\n";本物のセッション動作で確認したい場合
cd topics/13-session-cookie/ch02-session-basic/drill/01-set-and-get/
php -S localhost:8000 answer.php
ブラウザで http://localhost:8000/ を開く。リロードしても同じ値が表示される (Session が PHPSESSID で保たれている)。
ドリル 02 — `$_SESSION['count']` で 3 回 increment
問題
同一プロセス内で $_SESSION['count'] を 3 回 increment して、最終的な値を 1 行で出力してください。
$_SESSION['count']が未設定なら0で初期化してから increment する- ループでも 3 回
++でも実装方法は問わない
期待される出力:
3
採点
php scripts/grade.php topics/13-session-cookie/ch02-session-basic/drill/02-counter/
ヒント
$_SESSION['count'] = $_SESSION['count'] ?? 0;
for ($i = 0; $i < 3; $i++) {
$_SESSION['count']++;
}
echo $_SESSION['count'] . "\n";本物のセッション動作で確認したい場合
cd topics/13-session-cookie/ch02-session-basic/drill/02-counter/
php -S localhost:8000 answer.php
ブラウザで http://localhost:8000/ を開き、リロードするたびに 3 ずつ増える ことを確認 (Session に保持されている)。
演習問題(2問)
サイト内で問題文・雛形・解答例を確認できます。実際に手元で解くには教材リポジトリを clone してください。