ldap_search

(PHP 4, PHP 5, PHP 7, PHP 8)

ldap_searchВыполняет поиск по LDAP-дереву

Описание

ldap_search(
    LDAP\Connection|array$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$controls = null
): LDAP\Result|array|false

Функция выполняет поиск для заданного фильтра в каталоге с областью действия 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";

?>
To Top