topic: session-cookie (session / cookie / login / CSRF) / ch02 — `session_start()` と `$_SESSION` の基本 / 演習 02

📝 ドリル 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";
▶ 3v4l で実行

本物のセッション動作で確認したい場合

cd topics/13-session-cookie/ch02-session-basic/drill/02-counter/
php -S localhost:8000 answer.php

ブラウザで http://localhost:8000/ を開き、リロードするたびに 3 ずつ増える ことを確認 (Session に保持されている)。

テストケース

期待される出力

3

📄 starter.php(雛形)

このコードから書き始めてください。

<?php

// 採点用スタブ: CLI で session_start() を安定動作させるための前処理
error_reporting(E_ERROR);
ini_set('session.use_cookies', '0');
ini_set('session.use_only_cookies', '0');
$tmpDir = sys_get_temp_dir() . '/dojo_l13_' . getmypid();
@mkdir($tmpDir, 0700, true);
session_save_path($tmpDir);
session_id('TESTSESSIONID');
@session_start();

// TODO: $_SESSION['count'] が未設定なら 0 で初期化する
// TODO: 3 回 increment する
// TODO: 最終値を 1 行で出力する
✅ 解答例を見る(自分で解いてから)
<?php

// 採点用スタブ: CLI で session_start() を安定動作させるための前処理
error_reporting(E_ERROR);
ini_set('session.use_cookies', '0');
ini_set('session.use_only_cookies', '0');
$tmpDir = sys_get_temp_dir() . '/dojo_l13_' . getmypid();
@mkdir($tmpDir, 0700, true);
session_save_path($tmpDir);
session_id('TESTSESSIONID');
@session_start();

$_SESSION['count'] = $_SESSION['count'] ?? 0;
for ($i = 0; $i < 3; $i++) {
    $_SESSION['count']++;
}
echo $_SESSION['count'] . "\n";