- - PR -
PHP初心者 Basic認証について
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2007-01-16 13:36
解説本に沿って勉強中です。
次のBasic認証のコードでユーザー、パスワードを入力しても、認証画面が繰り返し表示されるだけで ブラウザに変わりません。キャンセルした場合のみキャンセル時のメッセージをブラウザに表示します。 どこがおかしいのでしょうか。よろしくお願い致します。 <?php if(empty($_SERVER['PHP_AUTH_USER']) || $_SEVER['PHP_AUTH_USER']==""){ header("WWW-Authenticate:Basic realm=\"Sample\""); header("HTTP/1.0 401 Unauthorized"); ?> <html> <head> <title>Basic認証のテスト</title> <META http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> </head> <body> Basic認証のテスト<br> <br> キャンセルされました。 </body> </html> <?php }else{ if($_SERVER['PHP_AUTH_USER']=="test" && $_SERVER['PHP_AUTH_PW']=="pass"){ ?> <html> <head> <title>Basic認証のテスト</title> <META http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> </head> <body> Basic認証のテスト<br> <br> こんにちは、<?=$_SEVER['PHP_AUTH_USER']?>さん </body> </html> <?php }else{ header("WWW-Authenticate:Basic realm=\"Sample\""); header("HTTP/1.0 401 Unauthorized"); ?> <html> <head> <title>Basic認証のテスト</title> <META http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> </head> <body> Basic認証のテスト<br> <br> ユーザーID、またはパスワードが違います。 <br> </body> </html> <?php }} ?> | ||||||||
|
投稿日時: 2007-01-16 14:04
検証のために、「ユーザーID、またはパスワードが違います。」がある
最後の else { } の中で、 ・header の送信をコメントアウトする ・$_SERVER['PHP_AUTH_USER'] と $_SERVER['PHP_AUTH_PW'] を表示する をしてみたらどうでしょう。 どう「ユーザーID、またはパスワードが違」うのかが分かると思いますが。 | ||||||||
|
投稿日時: 2007-01-16 14:15
webサーバのBASIC認証を使うのであれば、PHP_AUTH_USERとPHP_AUTH_PASSは認証されたあとでセットされると思いますが、.htaccessの設定などは間違いないですか? http://www.php.net/manual/ja/features.http-auth.php [ メッセージ編集済み 編集者: shimix 編集日時 2007-01-16 14:16 ] | ||||||||
|
投稿日時: 2007-01-16 16:16
ありがとうございました。
ご指摘頂いた「.htaccessの設定」という意味がよく分からなかったのですが、 shimixにご紹介頂いたサイトをヒントに修正したらOKでした。(以下) よろしければ「.htaccessの設定」の意味を教えて頂けますでしょうか。 一応解決しましたので、時間があればで結構です。 <?php if(!isset($_SERVER['PHP_AUTH_USER'])){ header("WWW-Authenticate: Basic realm=\"sample\""); header("HTTP/1.0 401 Unauthorized"); ?> <html> <head> <title>Basic認証のテスト</title> <META http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> </head> <body> Basic認証のテスト<br> <br> キャンセルされました。 </body> </html> <?php }else{ if($_SERVER['PHP_AUTH_USER']=="test" && $_SERVER['PHP_AUTH_PW']=="pass"){ ?> <html> <head> <title>Basic認証のテスト</title> <META http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> </head> <body> Basic認証のテスト<br> <br> こんにちは <?php print $_SERVER['PHP_AUTH_USER']; ?> </body> </html> <?php }else{ header("WWW-Authenticate: Basic realm=\"sample\""); header("HTTP/1.0 401 Unauthorized"); ?> <html> <head> <title>Basic認証のテスト</title> <META http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> </head> <body> Basic認証のテスト<br> <br> ユーザーID、またはパスワードが違います。<br> <br> </body> </html> <?php }} ?> | ||||||||
|
投稿日時: 2007-01-16 16:23
失礼しました。
>shimixにご紹介頂いたサイトをヒントに修正したらOKでした。(以下) ↓ shimixさんです。 申し訳ありません。 | ||||||||
|
投稿日時: 2007-01-16 17:10
あ、失礼・・ちょっと動作(というか意図)がつかめてなかったので、もし「サーバでBASIC認証を使うなら.htaccessを書いて・・」と思っただけです。サーバでの認証結果をphpで利用する場合ですね。phpでHTTP認証してしまうのであれば、.htaccessの設定は不要です。ただしそうなると前述のマニュアルにあるとおり
|
1