PHP 基本認証を設定する (header)

目次

(確認環境:PHP 7,XAMPP 7.1.8,Windows 10)

基本認証とは

  • Webサーバやアプリがユーザー名とパスワードを要求し、正しい認証情報を送らないとアクセスできないようにする仕組みです。
  • Basic認証は平文のBase64エンコードなので、通信経路が暗号化されていないと簡単に盗聴されます。
    →実運用では必ずHTTPSとセットで使う必要があります。
  • UIはブラウザ依存で、デザインをカスタマイズできません。

基本認証を行う

header (ヘッダ文字列,オプション,レスポンスコード)
  • headerは、HTTPヘッダを送信する関数です。
  • ヘッダ文字列に「WWW-Authenticate: Basic realm=値」を記述することでユーザー名とパスワードの入力ダイアログが表示されます。基本認証(Basic認証)を行います。

header関数で基本認証を行うサンプルです。

<?php
$user = 'aad';
$pass = 'bbb';

if($_SERVER["PHP_AUTH_USER"]==$user && $_SERVER["PHP_AUTH_PW"]==$pass){
	echo "<p>ようこそ、{$_SERVER['PHP_AUTH_USER']}さん</p>";

} else {
	header("WWW-Authenticate: Basic realm=\"test1\"");
	header("HTTP/1.0 401 Unauthorized - test");
	echo "<p>キャンセルボタンが押されました</p>";
	exit;
}
?>

5行目は、ユーザ名とパスワードの確認をしています。
9行目は、「WWW-Authenticate: Basic realm=値」で基本認証のダイアログを表示します。
10-12行目は、ダイアログのキャンセルボタンを押すと実行されます。
正しいユーザー名とパスワードを入力してログインボタンを押すと6行目の文言が表示されます。
10行目は、レスポンスのステータスコードです。

初回表示時に表示されるダイアログ

初回表示時に表示されるダイアログです。
正しいユーザー名とパスワードを入力してログインボタンを押すと上記コードの6行目の文字が表示されます。

HTTPレスポンス

初回表示時に表示されるダイアログでキャンセルボタンを押した時のHTTPレスポンスです。

1つめの赤枠はステータスコードです。401 Unauthorized - testと表示されます。
2つめの赤枠は上記コードの9行目の記述です。Basicの文字があります。

初期の状態に戻したいとき

一度認証された後に再度初期の状態に戻したい場合は、ブラウザを閉じるまたはコード10行目の401 Unauthorizedをクライアントに送信します。

関連の記事

PHP セッションを確認する(session)
PHP クッキーを確認する(cookie)
PHP メールを送信する (mb_send_mail)
「HTTPリクエスト」と「HTTPレスポンス」とは

△上に戻る