[PHP-users 2001] Header関数について

sath php-users@php.gr.jp
Thu, 13 Sep 2001 09:46:01 +0900


初めまして、佐藤と申します

PHPを利用してBASIC認証を行おうと考えています。
実際導入し、基本的なBASIC認証の動きは出来ているのですが、一つ問題が発生しま
した。

BASIC認証の再ログインを実現するために、Header関数を用いて認証ダイアログを表
示させました。
使用した関数は

Header("HTTP/1.0 401 Authorized Request");   認可リクエスト??
Header("WWW-authenticate: basic realm=\"php authenticationexample\"");

または

Header("HTTP/1.0 401 Unauthorized");                不認可リクエスト??
Header("WWW-authenticate: basic realm=\"php authenticationexample\"");

両方確認してみたのですが、ダイアログは立ち上がるのですが、正常に動きません。
正常に動かないというのは、

例えば
.htaccessにより管理されているページにおいて、
認証された、「ユーザaaaパスワードaaa」と「ユーザbbbパスワードbbb」がいるとし
ます。 
「ユーザaaaパスワードaaa」で入り、上記のHeader関数を用いて認証ダイアログを表
示させます。
表示させたダイアログに「ユーザbbbパスワードbbb」を入力します。
すると再度入力が要求されます(認証が間違っているときの動作)。
ですが「ユーザcccパスワードccc」と入力すると、ダイアログが終了し環境変数に
「ユーザcccパスワードccc」が格納されます。

つまり、htaccessで認証されているユーザははじかれてしまいます。

ここでお聞きしたいのは、PHPのHeader関数を用いてBASIC認証を表示させた場合、
パスワードファイルは何を参照するのでしょうか
つまり、「.htaccess」か「httpd.conf」か、それとも何も参照しないか…。

それともう一つ、Header関数の使い方自体が間違っているのでしょうか?

ちなみにHeader関数はきちんとHTML書き出し前に実行させています。