参考:https://qiita.com/mpyw/items/bb8305ba196f5105be15
function BasicAuth()
{
// パスワードとIDのリスト(パスワードはハッシュ化したもの)
$list = [
'user' => 'password',
];
if (
!isset($_SERVER['PHP_AUTH_USER'], $_SERVER['PHP_AUTH_PW']) ||
!password_verify(
$_SERVER['PHP_AUTH_PW'],
isset($list[$_SERVER['PHP_AUTH_USER']])
? $list[$_SERVER['PHP_AUTH_USER']]
: '$2y$10$abcdefghijklmnopqrstuv' // ユーザ名が存在しないときだけ極端に速くなるのを防ぐ
)
) {
// 初回時または認証が失敗したとき
header('WWW-Authenticate: Basic realm="Enter username and password."');
header('Content-Type: text/plain; charset=utf-8');
exit('認証失敗');
}
}
ちなみによく聞くのが、生のパスワードをその送信するとかで、望ましくないとされているが、HTTPS環境であれば、暗号化されるため問題ない。