Обычно, когда публично доступный каталог требует базовой аутентификации HTTP, значение $_SERVER['HTTP_AUTHORIZATION']
и/или $_SERVER['REMOTE_USER']
(или $_SERVER['PHP_AUTH_USER']
, и т.д.) будут установлены и доступно для PHP, как только действительная комбинация имени пользователя/пароля была предоставлена серверу.
Например, если http://www.example.com/members
требует базовой аутентификации, и пользователь успешно прошел аутентификацию, используя учетные данные myusername
и mypassword
вручную вводить http://myusername:[email protected]/members
в браузере, значение $_SERVER['HTTP_AUTHORIZATION']
будет что-то вроде:
Basic bXl1c2VybmFtZTpteXBhc3N3b3Jk
.. ., а стоимость $_SERVER['REMOTE_USER']
бы просто:
myusername
Однако если аутентификация не требуется в том же Directo ry, но URL-адрес по-прежнему посещается с именем пользователя/паролем внутри него, значения имени пользователя/пароля не кажутся нигде (запуск PHP 5.3.10 как CGI/FastCGI на Apache/2.2.22).
Изнутри PHP (и/или .htaccess
в случае необходимости), когда аутентификация не требуется, есть способ для получения значения имени пользователя (и/или пароля), которые были предоставлены посетителем, который вручную добавили их в URL?
Он не может быть перенаправлен на PHP Apache, если он не требуется заголовком 401 –
Я только что сделал тестовую страницу, и 'PHP_AUTH_USER' и' PHP_AUTH_PW' оба установлены в массив '$ _SERVER', даже если нет необходима аутентификация. – Phil
@Phil Хм ... Это заставляет меня задаться вопросом, отсутствует ли в этой конкретной установке, с которой я работаю, модуль Apache или что-то в этом роде. И если это так, какой бы это было? Кроме того, если вы отправляете ненужные учетные данные пользователя/пароля, будут ли 'PHP_AUTH_USER' и' PHP_AUTH_PW' содержать те значения, которые были отправлены? – jerdiggity