プログラミング言語や環境設定を中心としたパソコン関連の技術メモです。
主にシステム開発中に調べたことをメモしています。TIPS的な位置付けで、気が向いたときにちまちま更新していきます。
PHP、BASIC認証のユーザ名とパスワードを取得する
結論から書くと

ユーザ名:$_SERVER['PHP_AUTH_USER']
パスワード:$_SERVER['PHP_AUTH_PW']


で取得できました。
取得できない場合は、.htaccessに以下の3行を追記してみてください。

RewriteEngine On
RewriteCond %{HTTP:Authorization} ^(.*)
RewriteRule ^(.*) - [E=HTTP_AUTHORIZATION:%1]

それでは詳細……と言うほどでもないですが、詳細を書いていきます。

とあるディレクトリ配下にBASIC認証を設定して簡易会員ページっぽくしていたのですが、
認証したユーザによって処理を振り分けたいという依頼を頂戴いたしました。

ふむ。
BASIC認証のユーザ名って、プログラムから取得できるの(--?というのが今回のきっかけです。

ほんで、あれやこれやと調べたところ

$_SERVER['PHP_AUTH_USER']

でユーザ名が取得できるっぽいと分かりました。
ついでに、パスワードは

$_SERVER['PHP_AUTH_PW']

です。

なるほど!
早速、こんなテストコードを書いて実行してみましたφ(--)

<?php

if(isset($_SERVER['PHP_AUTH_USER'])){
    print 'ユーザ名:' . $_SERVER['PHP_AUTH_USER'] . "<br>\n";
    print 'パスワード:' . $_SERVER['PHP_AUTH_PW'] . "<br>\n";
}else{
    print "取得失敗";
}

結果、取得失敗\(--)/

なんでだよー(-ε-)と思って調べたところ、
環境によって上手く動作しないみたいですね。

ほんで、あれやこれやと調べたところ.htaccessに

RewriteEngine On
RewriteCond %{HTTP:Authorization} ^(.*)
RewriteRule ^(.*) - [E=HTTP_AUTHORIZATION:%1]

と書けば動くかもよ!な情報を見つけました。

ふむふむ(--)

それじゃあ、早速……ということで、.htaccessに追記してこんな感じにしたらφ(--)

AuthType    Basic
AuthName    "piyopiyo only"
AuthUserFile    /path/pwd.hoge
require        valid-user

RewriteEngine On
RewriteCond %{HTTP:Authorization} ^(.*)
RewriteRule ^(.*) - [E=HTTP_AUTHORIZATION:%1]

無事に動きました。

やったねっ\(--)/
スポンサーリンク
 
このエントリーをはてなブックマークに追加 

category:● PHP  thema:システム開発 - genre:コンピュータ  Posted by ササキマコト