PHP5 .htaccessによるBASIC認証のときのユーザ名取得には$_SERVER[‘REMOTE_USER’]を使う

うーんサーバ移行ではまった。

以前のプログラムではBASIC認証が行われていないと、認証ダイアログを出してサイドアクセスを要求するつくりになっていた。サーバが変わってもこんな単純なものすぐ動くだろうと思ったが、何度やっても認証にパスしない。

if (!isset($_SERVER['PHP_AUTH_USER'])) {
    header("WWW-Authenticate: Basic realm=\"INPUT ID AND PASSWORD\"");
    header("HTTP/1.0 401 Unauthorized");
    exit;
}

調べてみるとPHP_AUTH_USERが空白となり取得できていない。
なんで!!と調べてみたところこのサーバ移行先では諸所の事情により.htaccessによる認証をかけていた。その場合はREMOTE_USERというもので取得できるそうな。

echo $_SERVER['PHP_AUTH_USER'];
echo $_SERVER['REMOTE_USER'];

このコードで試してみたら、確かに下段の記述でユーザ名を取得可能なのであった!細かい違いにびっくり

カテゴリー: Apache, PHP パーマリンク

コメントを残す

メールアドレスが公開されることはありません。

Time limit is exhausted. Please reload the CAPTCHA.