PHP_AUTH_USER未设置?

New*_*_25 39 php http-authentication

由于某种原因,没有任何代码

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

}
Run Code Online (Sandbox Code Playgroud)

正在为我执行.当我输入正确的用户名和密码时,会再次弹出授权提示框.如果两个字段都正确并且我按下输入,那么这两个字段都不会被设置吗?但由于某些原因并非如此.我能做错什么?谢谢.

Chr*_*isV 67

在CGI模式PHP中使用HTTP Basic Auth是一种"合理的方法":在.htaccess中使用

RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
Run Code Online (Sandbox Code Playgroud)

并在PHP中使用

list($_SERVER['PHP_AUTH_USER'], $_SERVER['PHP_AUTH_PW']) = 
  explode(':', base64_decode(substr($_SERVER['HTTP_AUTHORIZATION'], 6)));
Run Code Online (Sandbox Code Playgroud)

  • 出于某种原因,在我的服务器上我不得不使用$ _SERVER ['REDIRECT_HTTP_AUTHORIZATION'] (10认同)
  • 这对我来说只有.htacess中的RewriteRule一行.我没有对PHP进行任何更改,现在设置了`$ _SERVER ['PHP_AUTH_USER']`和`$ _SERVER ['PHP_AUTH_PW']`. (5认同)
  • 首先尝试检查`$ _SERVER ['REDIRECT_HTTP_AUTHORIZATION']`是否设置为非空,然后你可以使用`list($ _ SERVER ['PHP_AUTH_USER'],$ _SERVER ['PHP_AUTH_PW'])= explode(':', base64_decode(substr($ _ SERVER ['HTTP_AUTHORIZATION'],6)));`,因为在我的情况下,一些服务器具有`REDIRECT_HTTP_AUTHORIZATION`索引而不是`HTTP_AUTHORIZATION`,所以最好为两个偏移设置一个完整条件. (5认同)
  • https://github.com/symfony/symfony/blob/master/src/Symfony/Component/HttpFoundation/ServerBag.php#L47 (3认同)
  • 任何人都可以在此回复中解释 RewriteRule 吗?它对我有用,但我实际上不明白。:-) (3认同)

a.b*_*ema 20

试试这个

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization},L]
</IfModule>
Run Code Online (Sandbox Code Playgroud)

在.htaccess文件中,您必须将其放入根目录

然后

list($_SERVER['PHP_AUTH_USER'], $_SERVER['PHP_AUTH_PW']) = explode(':' , base64_decode(substr($_SERVER['HTTP_AUTHORIZATION'], 6)));
Run Code Online (Sandbox Code Playgroud)

在你的PHP脚本的开头


the*_*anz 11

我在Ubuntu 14.04上使用Symfony 2.5.7在PHP-PFM + Apache 2.4上运行.BASIC_AUTH也工作我还需要通过添加以下内容来正确配置Apache VirtualHost:

SetEnvIf授权"(.*)"HTTP_AUTHORIZATION = $ 1

同样在这里提到/sf/answers/1224357921/


Clé*_*ezo 11

从 Apache 2.4.13 开始,您只需在 .htaccess 中使用CGIPassAuth指令:

CGIPassAuth On
Run Code Online (Sandbox Code Playgroud)


MrA*_*ous 2

尝试$_SERVER['REMOTE_USER']。这适用于 PHP 5.3 CGI + Apache 安装。