Итак, я пытаюсь выполнить поиск по имени пользователя с помощью PHP и LDAP. Однако есть несколько серверов и несколько доменов. Я понял, как заставить логин работать плавно, насколько я проверял, по крайней мере. Однако функция поиска немного сложнее.Поиск LDAP нескольких серверов и доменов (PHP)
$Servers = $LDAP['LDAPSrvs'];
$Domains = $LDAP['LDAPDoms'];
$sLoop = 0;
$dLoop = 0;
foreach($Servers as $Server)
{
$sLoop++;
$connect = 'ldap://'.$Server;
$lcon = ldap_connect($connect);
ldap_set_option($lcon, LDAP_OPT_PROTOCOL_VERSION, 3);
ldap_set_option($lcon, LDAP_OPT_NETWORK_TIMEOUT, 1);
$bind = ldap_bind($lcon, $LDAP['LDAPUser'], $LDAP['LDAPPass']);
if($bind)
{
$search = ldap_search($lcon, $DN, "(sAMAccountName=$username)");
if($search)
{
$info = ldap_get_entries($lcon, $search);
echo var_export($info);
if(count($info) >= 1)
break;
} else {
new MessageHandler('No users were found.', 'INFO');
}
}
else
{
new MessageHandler('Something went wrong.', 'ERR');
}
}
@ldap_close($lcon);
Код, который я использую для поиска. Тем не менее, это дает большую задержку, и даже ошибка в сервере/DN не обнаружила пользователя с этим именем пользователя.
У меня очень ограниченный опыт работы с LDAP и PHP, поэтому я бы не знал, как это решить сам. Я всегда решаю вещи, пытаясь и терпя неудачу, поэтому в конце концов я могу найти хак, который работает. Однако, если кто-нибудь может мне помочь, объяснив мне, как это можно сделать, было бы очень полезно!
Благодарим вас за ответ! Я проверю его и вернусь сюда с результатами. – Nozemi
Я отредактировал ваш ответ, установил LDAP_OPT_REFERRALS равным 0. Это сделало его поиск мгновенно. – Nozemi
Это был бы следующий вопрос, относятся ли LDAP-серверы к внешним серверам. В этом случае настройка LDAP_OPT_REFERRALS, чтобы не следовать им, ускорит поиск вверх - ради того, чтобы не искать полный каталог. Это зависит от вашей настройки, хорошо ли это или нет. – heiglandreas