このブログを作成している際に、特定の記事だけ簡単な認証を行いたかったので、 PHP で BASIC 認証 っぽいことをやってみた。
実装は簡単で、ユーザが BASIC 認証を行った場合 PHP_AUTH_USER と PHP_AUTH_PW 環境変数にその際のユーザ名とパスワードが復号化されて格納される。
これを PHP で認証して、違ったら 401 エラーを返せばいいだけ。
$signin = false;
if (isset ($_SERVER['PHP_AUTH_USER']) &&
    isset ($_SERVER['PHP_AUTH_PW']))
{
    if ($_SERVER['PHP_AUTH_USER'] == 'masaki' && 
        $_SERVER['PHP_AUTH_PW'] == 'password')
    {
        $signin = true;
    }
}
if (! $signin)
{
    header('WWW-Authenticate: Basic realm="Enjoi Blog"');
    header('HTTP/1.0 401 Unauthorized');
    print "Error 401";
    exit;
}