Как установить PHP_AUTH_USER

PHP_AUTH_USER пуст. И система, использующая учетные данные для входа Windows.

Как я могу его изменить.

Я хочу использовать имя пользователя и пароль, введенные пользователем

Если вы используете PHP под IIS и используете аутентификацию Windows, вы можете найти имя пользователя под одним (или более) из них:

  • $ _SERVER [ 'LOGON_USER']
  • $ _SERVER [ 'AUTH_USER']
  • $ _SERVER [ 'REDIRECT_LOGON_USER']
  • $ _ENV [ 'REDIRECT_LOGON_USER']

Забудьте о пароле – при запуске 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>"; }