6/13(土)ブログを大幅リニューアル!🎉
PHPでBasic認証を設定する方法

PHPでBasic認証を設定する方法

サイト制作でフロントチームからサーバーサイド(PHP)でBasic認証をかけてほしいと要望があり、意外なところで沼ったのでメモ。

Basic認証を設定したいページの先頭で下記をコピペすればOKです。

<?php
// Basic認証 設定値
$BASIC_AUTH_USER = 'user';
$BASIC_AUTH_PASSWORD = 'pass';

// リクエストから取得したユーザー名とパスワードを検証
if (
    !isset($_SERVER['PHP_AUTH_USER']) || !isset($_SERVER['PHP_AUTH_PW']) ||
    $_SERVER['PHP_AUTH_USER'] !== $BASIC_AUTH_USER || $_SERVER['PHP_AUTH_PW'] !== $BASIC_AUTH_PASSWORD
) {
    // 認証が失敗した場合、ベーシック認証を要求
    header('WWW-Authenticate: Basic realm="Restricted Area"');
    header('HTTP/1.0 401 Unauthorized');
    echo 'Authentication required';
    exit;
}
?>

以上。

認証画面が繰り返し表示される場合

Basic認証は設定できたが、正しい値を入力しても認証画面が繰り返し表示される時.htaccessに以下を追記すると改善する可能性があります。(レンタルサーバーでありがち)

RewriteEngine  On
RewriteCond     %{HTTP:Authorization} ^(.*)
RewriteRule     ^(.*) - [E=HTTP_AUTHORIZATION:%1]
うぇぶとまと

この記事を書いたキッカケがこれ。「認証画面が繰り返し表示される」です。今まで普通に使えてたもんで.htaccessのことを完全に失念してて地味に沼った。

まだコメントはありません

この記事に一番乗りでコメントしませんか?
感想・質問・補足など、何でもお待ちしてます!

👇 下のフォームからどうぞ!

コメントを書く

セキュリティのためreCAPTCHAを利用しています。
Googleのプライバシーポリシー利用規約が適用されます。