(PHP 4, PHP 5, PHP 7, PHP 8)
ldap_search — Поиск по LDAP дереву
$ldap
,$base
,$filter
,$attributes
= [],$attributes_only
= 0,$sizelimit
= -1,$timelimit
= -1,$deref
= LDAP_DEREF_NEVER
,$controls
= null
Выполняет поиск для указанного фильтра в директории с границами
LDAP_SCOPE_SUBTREE
. Эквивалентно поиску по всему каталогу.
Также можно выполнять параллельный поиск. В этом случае первым аргументом должен быть массив
экземпляров LDAP\Connection, а не один экземпляр.
Если поиск не должен использовать один и тот же базовый DN и фильтр, в качестве аргументов можно передать массив базовых DN и/или массив фильтров.
Количество элементов в массивах должно совпадать с количеством экземпляров LDAP\Connection,
поскольку первые записи массивов используются для одного поиска, вторые - для другого и так далее.
При параллельном поиске возвращается массив экземпляров LDAP\Result, за исключением возникновения ошибки, когда возвращается значение false
.
ldap
Экземпляр LDAP\Connection, возвращаемый функцией ldap_connect().
base
Базовое DN для каталога.
filter
Поисковый фильтр может быть простым или расширенным, используя булевы операторы в формате, описанном в документации LDAP (смотрите » Netscape Directory SDK или » RFC4515 для полной информации о фильтрах).
attributes
Массив необходимых атрибутов, например, array("mail", "sn", "cn")
.
Обратите внимание, что "dn" всегда возвращается, независимо от того,
какие типы атрибутов требуются.
Использование этого параметра намного более эффективно, чем действие по умолчанию (которое должно возвратить все атрибуты и присвоенные им значения). Поэтому использование этого параметра считается хорошей практикой.
attributes_only
Должен быть равен 1, если требуются только типы атрибута. Если равен 0, то, по умолчанию, выбираются и типы атрибутов и значения.
sizelimit
Позволяет ограничить количество выбранных записей. Установка этого параметра равным 0 означает, что ограничение отсутствует.
Замечание:
Этот параметр НЕ может переопределять предустановку sizelimit на стороне сервера. Хотя его можно установить ниже.
Некоторые хосты серверов каталогов будут сконфигурированы так, чтобы возвратить не больше, чем предварительно установленное число записей. Если это произойдёт, то сервер укажет, что возвратил только частичный набор результатов. Это также происходит, если Вы используете этот параметр чтобы ограничить количество выбранных записей.
timelimit
Устанавливает число секунд, ограничивающее процесс поиска. Установка этого параметра равным 0 означает, что ограничение отсутствует.
Замечание:
Этот параметр НЕ может переопределять предустановку timelimit на стороне сервера. Хотя его можно установить ниже.
deref
Определяет как псевдонимы должны быть обработаны во время поиска. Может быть одним из следующих:
LDAP_DEREF_NEVER
- (по умолчанию) псевдонимы никогда не разыменовываются.
LDAP_DEREF_SEARCHING
- псевдонимы должны быть разыменованы во время поиска,
но не при определении местоположения базового объекта поиска.
LDAP_DEREF_FINDING
- псевдонимы должны быть разыменованы
при определении местоположения базового объекта, но не во время поиска.
LDAP_DEREF_ALWAYS
- псевдонимы должны разыменовываться всегда.
controls
Массив управляющих констант LDAP для отправки в запросе.
Возвращает экземпляр LDAP\Result, массив экземпляров LDAP\Result или false
в случае возникновения ошибки.
Версия | Описание |
---|---|
8.1.0 |
Параметр ldap теперь ожидает экземпляр LDAP\Connection;
ранее ожидался ресурс (resource) ldap link .
|
8.1.0 | Возвращает экземпляр LDAP\Result; ранее возвращался ресурс (resource). |
8.0.0 |
controls теперь допускает значение null; ранее значение по умолчанию было [] .
|
7.3.0 |
Добавлена поддержка параметра controls
|
Пример ниже получает организационную единицу, фамилию, имя и адрес электронной почты для всех людей в "My Company", где фамилия или имя содержат подстроку $person. Этот пример использует логический фильтр, чтобы сказать серверу, что нужно искать информацию больше, чем в одном атрибуте.
Пример #1 LDAP поиск
<?php
// $ds допустимый экземпляр LDAP\Connection
// $person всё или часть имени человека, н-р "Jo"
$dn = "o=My Company, c=US";
$filter="(|(sn=$person*)(givenname=$person*))";
$justthese = array("ou", "sn", "givenname", "mail");
$sr=ldap_search($ds, $dn, $filter, $justthese);
$info = ldap_get_entries($ds, $sr);
echo $info["count"]." записей возвращено\n";
?>