PHPファイルがパスワード保護されたディレクトリに配置されているサイトで、ユーザがBasic認証を通過し、そのディレクトリ内の任意のPHPファイルに最初にアクセスしたときにログを取りたいというニーズあり。
考え方
Basic認証のユーザ名は$_SERVER[‘PHP_AUTH_USER’]で得られる。
「任意のPHPファイルに最初にアクセスしたとき」となると、認証入力直後にアクセスされたPHPファイルでだけログを取る必要があるけど、これはクッキーを使うことで実現できそう。Basic認証セッションはブラウザを終了することでクリアされるが、有効期限指定無しで作成したクッキーもブラウザの終了と共にクリアされるので都合がいい。
サンプルコード
クッキーを食っていなければ初回アクセス、既に食っていたら初回ではないと判断。
1 2 3 4 5 6 7 |
$username = isset($_SERVER['PHP_AUTH_USER']) ? $_SERVER['PHP_AUTH_USER'] : ''; if (!empty($username)) { if (!isset($_COOKIE['logged_in'])) { recordLogin($username); setcookie('logged_in', 1); } } |