ベーシック認証で誰がアクセスしているかphpで取得する
問題
ベーシック認証でログインして使ってもらっているページで、何のユーザー名でログインしているか取得して処理を切り替えろといわれたが、phpでできる?
答え
ベーシック認証というのはリクエストのつどログイン情報が含まれるので、リクエストヘッダに入っている。
$_SERVER にも入っている。
リクエストヘッダに入っているのはベーシック認証の仕様にしたがってエンコードされた文字列になるので、$_SERVERを見るのが簡単そう。
//var_dump($_SERVER); //(前略) ["REMOTE_USER"]=> string(9) "yoshimura" ["AUTH_TYPE"]=> string(5) "Basic" //(後略)
Apacheのモジュールとしてインストールされていれば、Apache関連の関数を使ってリクエストヘッダを取得することができる。FastCGI環境でも、php5.4からはgetallheaders()関数が使える。
//var_dump(getallheaders());
array(9) {
//(中略)
["Authorization"]=>
string(18) "Basic dGVzdDp0ZXN0"
}