[PHP-users 31090] Re: ログインダイアログの認証が出来ない

鈴木 徹 suzuki-tooru @ hotmail.co.jp
2006年 12月 21日 (木) 14:24:24 JST


鈴木徹です。
回答ありがとうございます。
現在の症状は、ログインダイアログを出してユーザー情報を入力しても、
認証されずにダイアログが再出力されて、
3回入力すると「権限がありません」とブラウザが警告するものです。
ダイアログを出力する処理は

if (!isset($_SERVER['PHP_AUTH_USER'])){
    //ヘッダにレルムを渡して基本認証を通達する
    Header("WWW-authenticate: basic realm=\"My Realm\"");
    //ヘッダに非認証を渡してダイアログの表示を促す
    Header("HTTP/1.0 401 Unauthorized");
}
というソースコードを用いています。

var_dump($_SERVER);を実行したところ、

array(49) { ["ALLUSERSPROFILE"]=> string(35) "C:\Documents and Settings\All 
Users" ["CommonProgramFiles"]=> string(29) "C:\Program Files\Common Files" 
["COMPUTERNAME"]=> string(9) "(マシン名)" ["ComSpec"]=> string(25) 
"C:\WINNT\system32\cmd.exe" ["CONTENT_LENGTH"]=> string(1) "0" 
["GATEWAY_INTERFACE"]=> string(7) "CGI/1.1" ["HTTPS"]=> string(3) "off" 
["HTTP_ACCEPT"]=> string(3) "*/*" ["HTTP_ACCEPT_LANGUAGE"]=> string(2) "ja" 
["HTTP_CONNECTION"]=> string(10) "Keep-Alive" ["HTTP_HOST"]=> string(9) 
"localhost" ["HTTP_USER_AGENT"]=> string(89) "Mozilla/4.0 (compatible; MSIE 
6.0; Windows NT 5.0; .NET CLR 2.0.50727; .NET CLR 1.1.4322)" 
["HTTP_ACCEPT_ENCODING"]=> string(13) "gzip, deflate" ["INSTANCE_ID"]=> 
string(1) "1" ["LOCAL_ADDR"]=> string(9) "127.0.0.1" 
["NUMBER_OF_PROCESSORS"]=> string(1) "1" ["Os2LibPath"]=> string(26) 
"C:\WINNT\system32\os2\dll;" ["OS"]=> string(10) "Windows_NT" ["Path"]=> 
string(64) 
"C:\PHP\;C:\WINNT\system32;C:\WINNT;C:\WINNT\System32\Wbem;c:\php" 
["PATHEXT"]=> string(48) ".COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH" 
["PHPRC"]=> string(7) "C:\PHP\" ["PROCESSOR_ARCHITECTURE"]=> string(3) 
"x86" ["PROCESSOR_IDENTIFIER"]=> string(46) "x86 Family 6 Model 8 Stepping 
10, GenuineIntel" ["PROCESSOR_LEVEL"]=> string(1) "6" 
["PROCESSOR_REVISION"]=> string(4) "080a" ["ProgramFiles"]=> string(16) 
"C:\Program Files" ["REMOTE_ADDR"]=> string(9) "127.0.0.1" 
["REMOTE_HOST"]=> string(9) "127.0.0.1" ["REQUEST_METHOD"]=> string(3) 
"GET" ["SCRIPT_NAME"]=> string(21) "/auth/loginsample.php" 
["SERVER_NAME"]=> string(9) "localhost" ["SERVER_PORT"]=> string(2) "80" 
["SERVER_PORT_SECURE"]=> string(1) "0" ["SERVER_PROTOCOL"]=> string(8) 
"HTTP/1.1" ["SERVER_SOFTWARE"]=> string(17) "Microsoft-IIS/5.0" 
["SystemDrive"]=> string(2) "C:" ["SystemRoot"]=> string(8) "C:\WINNT" 
["TEMP"]=> string(13) "C:\WINNT\TEMP" ["TMP"]=> string(13) "C:\WINNT\TEMP" 
["USERPROFILE"]=> string(38) "C:\Documents and Settings\Default User" 
["windir"]=> string(8) "C:\WINNT" ["ORIG_PATH_TRANSLATED"]=> string(39) 
"c:\inetpub\wwwroot\auth\loginsample.php" ["ORIG_PATH_INFO"]=> string(21) 
"/auth/loginsample.php" ["ORIG_SCRIPT_NAME"]=> string(21) 
"/auth/loginsample.php" ["SCRIPT_FILENAME"]=> string(39) 
"c:\inetpub\wwwroot\auth\loginsample.php" ["PHP_SELF"]=> string(21) 
"/auth/loginsample.php" ["REQUEST_TIME"]=> int(1166669748) ["argv"]=> 
array(0) { } ["argc"]=> int(0) } 

と表示されました。
PHP_AUTH_USERもHTTP_AUTHORIZATIONも存在しませんでした。
原因はここにあるのでしょうか?

また、
list($user, $pw) = explode(':', 
base64_decode(substr($_SERVER['HTTP_AUTHORIZATION'], 6)));
を実行したところ、$userがNULLを返してきます。

IISの設定か、php.iniの設定に問題があるのでしょうか?
度々の質問ですみませんが、よろしくお願いします。

_________________________________________________________________
浅草キッドとラーメンマスターが全国から厳選のラーメン1,000杯を公開中! 
http://promotion.live.jp/searchmap/ 



PHP-users メーリングリストの案内