[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 メーリングリストの案内