#php #authentication #ldap
Вопрос:
У меня есть PHP-скрипт с аутентификацией LDAP, который отлично работает. Теперь у меня есть проблема, которую я хочу найти в двух подразделениях. Мне это нужно, потому что мы выполняем миграцию Windows и имеем временные два подразделения. Я хочу, чтобы, если участника нет в первом подразделении, найдите пользователя во втором подразделении.
Вот мой код. Я подумал, что мог бы продублировать свою строку и переименовать подразделение в ldap_dn2
и CompanyNew
:
$ldap_dn = "OU=Company,DC=mydomain,dc=de";
$ldap_dn2 = "OU=CompanyNew,DC=mydomain,dc=de";
Но что дальше? Как я могу проверить это в своем коде:
Для того единственного, кто у меня есть:
$result = ldap_search($ldap, $ldap_dn, $filter, $attr) or exit("LDAP-Server kann nicht durchsucht werden!");
Как может человек сказать «хорошо, не найден $result
, поэтому ищите $ldap_dn2
«?
ОТРЕДАКТИРОВАНО: друг помог мне, и это решение:
function performLDAPSearch($ldap, $ldap_dn, $ldap_dn_2, $filter, array $attr)
{
$result = ldap_search($ldap, $ldap_dn, $filter, $attr);
$entries = ldap_get_entries($ldap, $result);
if (!$entries || count($entries) == 0) {
$result = ldap_search($ldap, $ldap_dn_2, $filter, $attr);
}
if (!$result) {
exit("LDAP-Server kann nicht durchsucht werden!");
}
return $resu<
}
Комментарии:
1. Что
$result
содержится, когда первый поиск завершается неудачей?2. Вы можете использовать
or
синтаксис типа в запросе ldap, чтобы он автоматически выполнял поиск в обоих подразделениях.3. мой пользователь находится в первом $ldap_dn, повторил результат $и получил «0». я думал, что могу сказать «если результат==0 поиск $ldap_dn2..но это не работает
4. вы имеете в виду: $результат = ldap_search($ldap, $ldap_dn, $фильтр, $attr) или ldap_search($ldap, $ldap_dn2, $фильтр, $attr) выход(«LDAP-сервер kann nicht durchsucht werden!»);? это не работает :/
5. По какому параметру вы проводите фильтрацию? Имя,фамилия, имя пользователя, идентификатор пользователя ??