前提
PHP にて、Basic 認証を追加しました。
ユーザーIDとパスワードを入力するダイアログボックスは出るのですが、
正しい答えを入力しても、処理がすすまず、何度も同じダイアログボックスが出ます。
sampleさんログイン中 と表示するにはどうしたらいいでしょうか?
該当のソースコード
basic_auth.php
PHP
1<?php 2 //Basic認証 3 $user = 'sample'; 4 $pass = 'password'; 5 6 if(isset($_SERVER['PHP_AUTH_USER']) && ($_SERVER["PHP_AUTH_USER"]==$user && $_SERVER["PHP_AUTH_PW"]==$pass)){ 7 print "{$_SERVER['PHP_AUTH_USER']}"; 8 print'さんログイン中<br/>'; 9 print'<br/>'; 10 } else { 11 header("WWW-Authenticate: Basic realm=\"basic\""); 12 header("HTTP/1.0 401 Unauthorized - basic"); 13 echo "<p>Unauthorized</p>"; 14 exit(); 15 } 16?>
.htaccess
AuthType Basic AuthName "member Only" AuthUserFile /home/users/2/chu.jp-rough-dic-9724/web/PHP/testroom/.htpasswd Require valid-user
.htpasswd
sample:$apr1$6rH..bJ6$tSRO42DFBxHfYYVTSh5G60
[編集で追加]
階層
PHP +---testroom +---.htaccess +---.htpasswd +---basic_auth.php
試したこと
.htpasswd のパスを色々試しました。
(が、ダメでした。)
補足情報(FW/ツールのバージョンなど)
IDE: Visual Studio Code
プラグインは使用してません。
サーバー:ロリポップ
Apache 2.4.x
.htaccessの作成/編集 ○(Optionsの指定は可)
PHP: ver7.4(CGI版)・ver8.0(CGI版)・ver8.1(CGI版)
ユーザー名やパスワードはどのように返ってきてるのでしょうか?
PHPのデバック方法を知らないので print で対応しています。
どちらのルーチンに入っても sampleさんログイン中と表示させる下のプログラムを作りましたが、
Unauthorized
とだけ表示されます。どうやら$_SERVER['PHP_AUTH_USER'] には何も入ってないようです。
if(isset($_SERVER['PHP_AUTH_USER']) && ($_SERVER["PHP_AUTH_USER"]==$user && $_SERVER["PHP_AUTH_PW"]==$pass)){
print "{$_SERVER['PHP_AUTH_USER']}";
print'さんログイン中<br/>';
print'<br/>';
} else {
print "{$_SERVER['PHP_AUTH_USER']}";
print'さんログイン中<br/>';
print'<br/>';
header("WWW-Authenticate: Basic realm=\"basic\"");
header("HTTP/1.0 401 Unauthorized - basic");
echo "<p>Unauthorized</p>";
exit();
}
環境説明を見てませんでした。
回答1件
あなたの回答
tips
プレビュー