これの焼き直し
www.php.net
BASIC認証の基本的な動き
基本的に、BASIC認証は2回アクセスが来る。
1回目は認証なし。サーバは一旦 401 で突っ返す。 2回目でBASIC認証が来る。
BASIC認証ではリクエストヘッダに Authorization が追加される
Authorization:Basic SE9HRTpQSVlP
PHPでの基本的な書き方
<?$_SERVER['HTTP_AUTHORIZATION']='Basic SE9HRTpQSVlP'; $_SERVER['PHP_AUTH_USER']='HOGE'; $_SERVER['PHP_AUTH_PW']='PIYO';
ユーザ名とパスワードがデコードされてて助かる。
<?$user=$_SERVER['PHP_AUTH_USER']??""; $pass=$_SERVER['PHP_AUTH_PW']??""; if($user==""){header('WWW-Authenticate: Basic realm="My Realm"'); header('HTTP/1.1 401 Authorization Required'); echo"ERROR: OTOTOI KIYAGARE"); exit(1); }if( authcheck($user, $pass)){
WWW-Authenticate: Basic realm="My Realm"を返すのが重要。 リクエスト側は認証の種類がBASIC認証であることがわからないので アホになってしまう。
もうむしろ 401 を自分で返さなくてもよい(なんか勝手に401と解釈される)