出于某种原因,
中没有任何代码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
}
正在为我执行。当我输入正确的用户名和密码时,会再次弹出授权提示框。如果两个字段都正确并且我按下输入,那么这两个字段都不会被设置吗?但由于某些原因并非如此。我能做错什么? 谢谢。
答案 0 :(得分:64)
在CGI模式PHP中使用HTTP Basic Auth有一种“合理的方式”:在.htaccess中使用
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
并在PHP中使用
list($_SERVER['PHP_AUTH_USER'], $_SERVER['PHP_AUTH_PW']) =
explode(':', base64_decode(substr($_SERVER['HTTP_AUTHORIZATION'], 6)));
答案 1 :(得分:20)
试试这个
<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脚本的开头
答案 2 :(得分:10)
我在Ubuntu 14.04上使用Symfony 2.5.7在PHP-PFM + Apache 2.4上运行。 BASIC_AUTH也工作我还需要通过添加:
来正确配置Apache VirtualHostSetEnvIf授权&#34;(。*)&#34; HTTP_AUTHORIZATION = $ 1
答案 3 :(得分:3)
在我的phpinfo()中,服务器API是CGI / Fast CGI。所以我已经通过在.htaccess文件中编写以下内容解决了我的问题
RewriteEngine on
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ app.php [QSA,L]
答案 4 :(得分:2)
试试$_SERVER['REMOTE_USER']
。这适用于PHP 5.3 CGI + Apache安装。
答案 5 :(得分:2)
如果授予用户访问权限,请在URL中提供用户名/密码,请检查是否
AuthType Digest
在您的VHost /目录/ .htaccess配置中有权使用。
这为我的用例修正了它。
答案 6 :(得分:0)
从 Apache 2.4.13 开始,您只需要在 .htaccess 中使用 CGIPassAuth 指令:
CGIPassAuth On
答案 7 :(得分:-3)
在我的主机服务器上,使用$_SERVER['REDIRECT_REMOTE_USER']
代替$_SERVER['PHP_AUTH_USER']