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

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

2 голосов
/ 25 августа 2010

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

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

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

Ответы [ 4 ]

9 голосов
/ 25 августа 2010

См. 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>";
  }
?> 

И описание идентификаторов в $_SERVER:

  • 'PHP_AUTH_USER': при работе под Apache или IIS (ISAPI на PHP 5) в качестве модуля, выполняющего HTTP-аутентификацию, эта переменная устанавливается на имя пользователя, предоставленное пользователем.

  • 'PHP_AUTH_PW': При работе под Apache или IIS (ISAPI на PHP 5) в качестве модуля, выполняющего аутентификацию HTTP, эта переменная устанавливается на пароль, предоставленный пользователем.

2 голосов
/ 26 августа 2010

Если вы используете 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 находятся в одной системе.Если вы храните свою базу данных где-то в другом месте ... хорошо, вы можете поискать в Google Double Hop Issue , если вы хотите узнать подробности, но короткая история в том, что она не работает.Я потерял месяц, ожидая, что клиент сдастся и разрешит обычному пользователю / передать логин в свою базу данных.

0 голосов
/ 11 февраля 2014

Когда это произошло при поиске IIS и отсутствии auth_user, я, вероятно, нашел объяснение, почему: если вы устанавливаете права доступа к папке для всех: чтение и выполнение, $ _SERVER ['_ USER'] не получают значения.

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

На 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>";
}
...