ОК - во-первых, вам нужно ext/ldap
для связи с вашим сервером Active Directory через интерфейс LDAP. Очевидно, это требование выполняется при установке PHP (в противном случае вы получите ошибки о неопределенных функциях).
Вопрос теперь в том, против какого сервера Windows вы кодируете? Начиная с Windows Server 2003, анонимные привязки по умолчанию отключены , что означает, что вы не можете выполнять поиск в дереве Active Directory без предварительной аутентификации с существующим и авторизованным пользователем. (Чтобы включить анонимные привязки, см. здесь - но поскольку у вас нет прав администратора, вы не сможете изменить это)
Вторая проблема - ваш базовый DN , который фактически является местоположением в вашем дереве LDAP, из которого будет выполняться операция поиска. Нормальное базовое DN для контейнера пользователя должно быть CN=Users,DC=yourdomain,DC=yourtopleveldomain
, например, CN=Users,DC=example,DC=local
.
Фильтр, который вы используете, на самом деле правильный: (SAMAccountName=username)
найдет запись учетной записи для пользователя username
. Чтобы использовать переменную вашего имени пользователя, вы можете сделать:
$filter = sprintf('(SAMAccountName=%s)', $user);
Тем не менее, общий поток кода, похоже, тоже правильный.
Подводя итог: сначала вам нужно проверить, разрешает ли Active Directory анонимные привязки, а затем вам нужно настроить базовое DN вашего поиска. Если анонимные привязки не разрешены, вам придется использовать пользователя, которому разрешено связываться с Active Directory.