(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";
?>