PHP_AUTH_USER не установлен? - PullRequest
       7

PHP_AUTH_USER не установлен?

38 голосов
/ 08 сентября 2010

По какой-то причине ни один из кодов в

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

}

выполняется для меня. Когда я ввожу правильное имя пользователя и пароль, снова появляется окно для авторизации. Разве оба поля не будут «установлены», если они верны, и я нажму клавишу ввода? Но по какой-то причине это не так. Что я могу делать не так? Спасибо.

Ответы [ 7 ]

66 голосов
/ 17 октября 2011

Существует «разумный способ» использовать HTTP Basic Auth в CGI-режиме PHP: в .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)));
20 голосов
/ 08 января 2014

попробуйте

<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-скриптов

11 голосов
/ 01 декабря 2014

Я использую Symfony 2.5.7, работающую на PHP-PFM + Apache 2.4 на Ubuntu 14.04. У меня работает BASIC_AUTH, он должен правильно настроить Apache VirtualHost, добавив:

SetEnvIf Authorization "(. *)" HTTP_AUTHORIZATION = $ 1

как уже упоминалось здесь https://stackoverflow.com/a/17490827/435956

3 голосов
/ 13 ноября 2013

В моем phpinfo () Sever API используется CGI / Fast CGI.Итак, я решил мою проблему с записью следующего в моем .htaccess файле RewriteEngine on RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ app.php [QSA,L]

2 голосов
/ 11 сентября 2012

Если пользовательский доступ предоставляется с указанием имени пользователя / пароля в URL, проверьте, имеет ли

AuthType Digest

право в вашей конфигурации VHost / Directory / .htaccess.

Это исправило это для моего использованияслучай.

2 голосов
/ 16 августа 2011

Попробуйте $_SERVER['REMOTE_USER']. Это работает для меня на установке PHP 5.3 CGI + Apache.

0 голосов
/ 14 октября 2012

На серверах моего хоста используйте $_SERVER['REDIRECT_REMOTE_USER'] вместо $_SERVER['PHP_AUTH_USER']

...