PHP_AUTH_USER пуст. И система, использующая учетные данные для входа Windows.
Как я могу его изменить.
Я хочу использовать имя пользователя и пароль, введенные пользователем
Если вы используете PHP под IIS и используете аутентификацию Windows, вы можете найти имя пользователя под одним (или более) из них:
Забудьте о пароле – при запуске PHP пользователь уже авторизовался, и сценарий не должен ему понадобиться.
Вы можете использовать проверку подлинности Windows для входа на SQL-сервер в качестве пользователя: посмотрите на документацию для fastcgi.impersonate . Это работает до тех пор, пока IIS и SQL Server находятся в одной системе. Если вы держите свою базу данных в другом месте … ну, вы можете обратиться за помощью к проблеме Double Hop, если хотите детали gory, но рассказ о том, что он не работает. Я потерял месяц, ожидая, когда клиент откажется и позволит войти в свою базу данных с помощью простого пользователя / пароля.
См. HTTP-аутентификацию с помощью PHP
<?php if (!isset($_SERVER['PHP_AUTH_USER'])) { Header("WWW-Authenticate: Basic realm=\"My Realm\""); Header("HTTP/1.0 401 Unauthorized"); echo "Text to send if user hits Cancel button\n"; exit; } else { echo "Hello {$_SERVER['PHP_AUTH_USER']}"; echo "<p>You entered {$_SERVER['PHP_AUTH_PW']} as your password.</p>"; } ?>
И описание inidices в $_SERVER
:
'PHP_AUTH_USER'
: при работе под Apache или IIS (ISAPI на PHP 5) в качестве модуля, выполняющего проверку подлинности HTTP, эта переменная устанавливается на имя пользователя, предоставленное пользователем.
'PHP_AUTH_PW'
: при работе под Apache или IIS (ISAPI на PHP 5) в качестве модуля, выполняющего проверку подлинности HTTP, эта переменная устанавливается на пароль, предоставленный пользователем.
Поскольку это произошло при поиске IIS и отсутствующего auth_user, я, вероятно, нашел объяснение, почему: если вы установите права доступа к папкам для всех: читать и выполнять, $ _SERVER ['_ USER] не получают никакой ценности.
На JodoHost используйте $_SERVER['REDIRECT_REMOTE_USER']
вместо $_SERVER['PHP_AUTH_USER']
.
Кроме того, если вы хотите увидеть все переменные сервера, сделайте небольшую тестовую страницу PHP и поместите в нее код PHP.
Если вы вошли в систему как пользователь, вы увидите, какое поле имеет ваше имя пользователя.
Кроме того, поместите этот тестовый файл в каталог, защищенный с помощью .htaccess:
PHP-код:
foreach($_SERVER as $key_name => $key_value) { print $key_name . " = " . $key_value . "<br>"; }