端くれプログラマの備忘録 PHP [PHP] HTTP認証を行うには

[PHP] HTTP認証を行うには

必要に迫られて調べたところ、Apacheで.htaccessを使わずとも、PHPでHTTP認証(Basic/Digest)を行うことができるらしい。

Basic HTTP 認証の例

<?php
if (!isset($_SERVER['PHP_AUTH_USER'])) {
    header("WWW-Authenticate: Basic realm=\"My Realm\"");
    header("HTTP/1.0 401 Unauthorized");
    echo "ユーザーがキャンセルボタンを押した時に送信されるテキスト\n";
    exit;
} else {
    echo "<p>こんにちは、{$_SERVER['PHP_AUTH_USER']} さん。</p>";
    echo "<p>あなたは、{$_SERVER['PHP_AUTH_PW']} をパスワードとして入力しました。</p>";
}
?>

PHPファイルで実装された機能のみを制限したい場合にはこの方法は役立ちそう。サーバー上に格納されているファイルを保護したい場合などには、やはりディレクトリ単位でアクセス制限を掛けたいので.htaccessによる認証を使う必要がある。場合によって使い分けよう。

参考サイト

PHP: PHP による HTTP 認証 – Manual
http://php.net/manual/ja/features.http-auth.php

phpでベーシック認証 – bnote
http://www.bnote.net/php/php/22_basic_auth.shtml