52

何らかの理由で、内のコードはどれも

if (isset($_SERVER['PHP_AUTH_USER']) &&
    isset($_SERVER['PHP_AUTH_PW']))
{

// When the above is set, the code that is here will execute of course

}

私のために実行されています。正しいユーザー名とパスワードを入力すると、認証のプロンプトボックスが再びポップアップ表示されます。両方のフィールドが正しく、Enterキーを押すと、両方のフィールドが「設定」されませんか?しかし、何らかの理由でそうではありません。何が間違っているのでしょうか?ありがとうございました。

4

8 に答える 8

79

CGI モードの PHP で HTTP Basic Auth を使用する「賢明な方法」があります。

RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

そしてPHPでの使用

list($_SERVER['PHP_AUTH_USER'], $_SERVER['PHP_AUTH_PW']) = 
  explode(':', base64_decode(substr($_SERVER['HTTP_AUTHORIZATION'], 6)));
于 2011-10-17T11:12:37.097 に答える
25

これを試して

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization},L]
</IfModule>

ルートディレクトリに配置する必要がある.htaccessファイル

その後

list($_SERVER['PHP_AUTH_USER'], $_SERVER['PHP_AUTH_PW']) = explode(':' , base64_decode(substr($_SERVER['HTTP_AUTHORIZATION'], 6)));

あなたのphpスクリプトの冒頭に

于 2014-01-07T22:27:06.910 に答える
3

によるとphpinfo()、私のサーバー API は CGI/Fast CGI なので、.htaccessファイルに次のコードを追加して問題を解決しました。

RewriteEngine on
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ app.php [QSA,L]
于 2013-11-13T12:18:30.703 に答える
2

URL にユーザー名/パスワードを指定してユーザー アクセスが許可されている場合は、以下を確認してください。

AuthType Digest

VHost/Directory/.htaccess 構成で権利が与えられています。

これにより、私のユースケースで修正されました。

于 2012-09-11T10:07:22.900 に答える
2

試してみてください$_SERVER['REMOTE_USER']。これは、PHP 5.3 CGI + Apache インストールで機能します。

于 2011-08-16T05:15:33.523 に答える
-3

私のホストのサーバーでは、$_SERVER['REDIRECT_REMOTE_USER']代わりに使用します$_SERVER['PHP_AUTH_USER']

于 2012-10-14T02:11:29.720 に答える