Можно ли получить Windows (AD) имя пользователя в PHP?

В тех же строках, что и JSON.encode, следует использовать join ().

function checkArrays( arrA, arrB ){

    //check if lengths are different
    if(arrA.length !== arrB.length) return false;


    //slice so we do not effect the original
    //sort makes sure they are in order
    //join makes it a string so we can do a string compare
    var cA = arrA.slice().sort().join(","); 
    var cB = arrB.slice().sort().join(",");

    return cA===cB;

}

var a = [1,2,3,4,5];
var b = [5,4,3,2,1];
var c = [1,2,3,4];
var d = [1,2,3,4,6];
var e = ["1","2","3","4","5"];  //will return true

console.log( checkArrays(a,b) );  //true
console.log( checkArrays(a,c) );  //false
console.log( checkArrays(a,d) );  //false
console.log( checkArrays(a,e) );  //true

Проблема только в том, что вам нравятся типы, которые были проведены последними сравнительными тестами. Если вам нравятся типы, вам придется зацикливаться.

function checkArrays( arrA, arrB ){

    //check if lengths are different
    if(arrA.length !== arrB.length) return false;

    //slice so we do not effect the orginal
    //sort makes sure they are in order
    var cA = arrA.slice().sort(); 
    var cB = arrB.slice().sort();

    for(var i=0;i<cA.length;i++){
         if(cA[i]!==cB[i]) return false;
    }

    return true;

}

var a = [1,2,3,4,5];
var b = [5,4,3,2,1];
var c = [1,2,3,4];
var d = [1,2,3,4,6];
var e = ["1","2","3","4","5"];

console.log( checkArrays(a,b) );  //true
console.log( checkArrays(a,c) );  //false
console.log( checkArrays(a,d) );  //false
console.log( checkArrays(a,e) );  //false

Если порядок должен оставаться таким же, как это просто цикл, никакой сортировки не требуется.

function checkArrays( arrA, arrB ){

    //check if lengths are different
    if(arrA.length !== arrB.length) return false;


    for(var i=0;i<arrA.length;i++){
         if(arrA[i]!==arrB[i]) return false;
    }

    return true;

}

var a = [1,2,3,4,5];
var b = [5,4,3,2,1];
var c = [1,2,3,4];
var d = [1,2,3,4,6];
var e = ["1","2","3","4","5"];

console.log( checkArrays(a,a) );  //true
console.log( checkArrays(a,b) );  //false
console.log( checkArrays(a,c) );  //false
console.log( checkArrays(a,d) );  //false
console.log( checkArrays(a,e) );  //false
45
задан fuentesjr 3 October 2008 в 19:53
поделиться

8 ответов

Проверьте AUTH_USER переменная запроса. Это будет пусто, если Ваше веб-приложение предоставит анонимный доступ, но если использование Вашего сервера, основной или Windows интегрировал аутентификацию, это будет содержать имя пользователя аутентифицируемого пользователя.

В домене Active Directory, если Ваши клиенты выполняют Internet Explorer и Ваш веб-сервер / полномочия файловой системы, настроены правильно, IE будет тихо утверждать, что их доменные учетные данные к Вашему серверу и AUTH_USER будут MYDOMAIN\user.name без пользователей, имеющих необходимость явно входить в систему Вашего веб-приложения.

46
ответ дан Sebas 8 November 2019 в 01:13
поделиться

Вы могли, вероятно аутентифицировать пользователь в Apache с mod_auth_kerb путем требования аутентифицируемого доступа к некоторым файлам †¦, я думаю, что путь, имя пользователя должно также быть доступным в переменных среды PHP где-нибудь †¦, вероятно, лучше всего для сверений <?php phpinfo(); ?>, как только Вы получаете его выполнение.

2
ответ дан hangy 8 November 2019 в 01:13
поделиться

Посмотрите на библиотечные функции PHP LDAP: http://us.php.net/ldap .

Active Directory [главным образом] соответствует стандарту LDAP.

4
ответ дан warren 8 November 2019 в 01:13
поделиться

Нет. Но то, что можно сделать, сделали, чтобы администратор Active Directory включил LDAP так, чтобы пользователи могли поддержать один набор учетных данных

http://us2.php.net/ldap

0
ответ дан Peter Bailey 8 November 2019 в 01:13
поделиться

Используйте этот код:

shell_exec("wmic computersystem get username")
0
ответ дан 26 November 2019 в 21:20
поделиться

Если вы используете Apache под Windows, то вы можете установить mod_auth_sspi с

https://sourceforge.net/projects/mod-auth-sspi/

Инструкции находятся в файле INSTALL, а также есть пример whoami.php. (Это просто случай копирования файла mod_auth_sspi.so в папку и добавления строки в httpd.conf.)

Как только он будет установлен, необходимые настройки будут сделаны в httpd. conf для защиты желаемых директорий, PHP заполнит $_SERVER['REMOTE_USER'] с пользователем и доменом ('USER\DOMAIN') аутентифицированного пользователя в IE -- или запросит и аутентифицирует его в Firefox перед передачей в.

Информация основана на сеансах, поэтому единственная(ish) подпись возможна даже в Firefox...

-Craig

.
3
ответ дан 26 November 2019 в 21:20
поделиться

Вы можете сказать getenv('USERNAME')

0
ответ дан 26 November 2019 в 21:20
поделиться

У меня есть php mysql, работающий на IIS - я могу использовать $ _ SERVER ["AUTH_USER"] , если я включаю проверку подлинности Windows в IIS -> Проверка подлинности и выключаю анонимную проверку подлинности (важно )

Я использовал это, чтобы получить моего пользователя и домен:

$user = $_SERVER['AUTH_USER'];

$ user вернет значение вроде: DOMAIN \ username в нашей сети, и тогда это просто случай удаление ДОМЕН \ из строки.

Пока это работало в IE, FF, Chrome, Safari (проверено).

16
ответ дан 26 November 2019 в 21:20
поделиться