ldap_search
(PHP 4, PHP 5, PHP 7)
ldap_search — Поиск по LDAP дереву
Описание
$ldap
, array|string $base
, array|string $filter
, array $attributes
= []
, int $attributes_only
= 0
, int $sizelimit
= -1
, int $timelimit
= -1
, int $deref
= LDAP_DEREF_NEVER
, array|null $controls
= null
) : resource|array|false
Выполняет поиск для указанного фильтра в директории с границами
LDAP_SCOPE_SUBTREE
. Эквивалентно поиску по всему каталогу.
Начиная с 4.0.5 также возможно производить параллельный поиск. Чтобы это сделать,
необходимо использовать в качестве первого параметра массив идентификаторов
ссылок, а не единственный идентификатор. Если необходимости использовать то же
самое основное DN и тот же самый фильтр для всех поисков нет, то можно
использовать массив базовых DN и/или массив фильтров. Эти массивы должны иметь
такой же размер, как и массив идентификаторов ссылок, так как первые записи
массивов используются для одного поиска, вторые записи используются для
другого и так далее. При выполнении параллельного поиска возвращается массив
идентификаторов результатов поиска, кроме ошибочных случаев, тогда запись,
соответствующая поиску, будет равна false
. Это похоже на обычный поиск,
когда возвращается значение, за исключением того, что идентификатор
результата всегда возвращается после проведения поиска. Есть некоторые редкие
случаи, когда обычный поиск возвращает false
, в то время как параллельный
поиск возвращает идентификатор.
Список параметров
-
ldap
-
Идентификатор ссылки LDAP, возвращенный 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 для отправки в запросе.
Возвращаемые значения
Возвращает идентификатор результата поиска или false
в случае ошибки.
Список изменений
Версия | Описание |
---|---|
8.0.0 |
controls теперь допускает значение null; ранее значение по умолчанию было [] .
|
7.3 |
Добавлена поддержка параметра controls
|
Примеры
Пример ниже получает организационную единицу, фамилию, имя и адрес электронной почты для всех людей в "My Company", где фамилия или имя содержат подстроку $person. Этот пример использует логический фильтр, чтобы сказать серверу, что нужно искать информацию больше, чем в одном атрибуте.
Пример #1 LDAP поиск
<?php
// $ds верный идентификатор ссылки на сервер директории
// $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";
?>