Elettracompany.com

Компьютерный справочник
3 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Ldap search php

Ldap search php

(PHP 3, PHP 4, PHP 5)

ldap_search — ищет дерево LDAP.

Описание

resource ldap_search (resource link_identifier, string base_dn, string filter [, array attributes [, int attrsonly [, int sizelimit [, int timelimit [, int deref]]]]])

Возвращает идентификатор результата поиска, FALSE при ошибке.

ldap_search() выполняет поиск специфицированного фильтра в директории с областью видимости LDAP_SCOPE_SUBTREE. Это эквивалентно поиску по всей директории.
base_dn специфицирует базовый DN для директории.

Имеется необязательный четвёртый параметр, который можно добавлять для ограничения атрибутов и значений, возвращаемых сервером, только теми, которые необходимы. Это более эффективно, чем акция по умолчанию (которая возвращает все атрибуты и их ассоциированные значения). Использование четвёртого параметра поэтому следует приветствовать.

Четвёртый параметр является стандартным строковым PHP-массивом из требуемых атрибутов, например, array(«mail»,»sn»,»cn»). Заметьте, что «dn» возвращается всегда, вне зависимости от того, атрибуты каких типов запрошены.

Отметьте, также, что некоторые хосты серверов директорий будут конфигурированы таким образом, чтобы возвращать не более предустановленного количества вхождений. Если это так, сервер укажет, что он возвращает только частичный результирующий набор. Это проявится также в том случае, если шестой параметр sizelimit использован для ограничения подсчёта извлечённых вхождений.

Пятый параметр attrsonly должен иметь значение 1, если нужны только типы атрибутов. Если установлен в 0, и типы, и значения атрибутов извлекаются — это поведение по умолчанию.

С помощью шестого параметра sizelimit возможно ограничить подсчёт извлечённых вхождений. Значение 0 означает — нет ограничений. ПРИМЕЧАНИЕ: этот параметр НЕ может переопределить серверную установку sizelimit. Но вы можете установить его ниже.

Седьмой параметр timelimit устанавливает количество секунд, отводимых для поиска. Установка 0 означает отсутствие ограничения. ПРИМЕЧАНИЕ: этот параметр НЕ может переопределить серверную установку timelimit. Но вы можете установить его ниже.

Восьмой параметр deref специфицирует, как псевдонимы должны обрабатываться при поиске. Может иметь одно из следующих значений:


LDAP_DEREF_NEVER — (по умолчанию) псевдонимы никогда не разыменовываются.

LDAP_DEREF_SEARCHING — псевдонимы должны разыменовываться в процессе поиска, но не разыменовываются при локализации базового объекта поиска.

LDAP_DEREF_FINDING — псевдонимы должны разыменовываться при локализации базового объекта, но не в процессе поиска.

LDAP_DEREF_ALWAYS — псевдонимы должны разыменовываться всегда.

Примечание: следующие необязательные параметры были введены в 4.0.2: attrsonly, sizelimit, timelimit, deref.

Фильтр поиска может быть простым или продвинутым, с использованием булевых операций в формате, описанном в документации LDAP (см. в Netscape Directory SDK полную информацию о фильтрах).

В примере запрашиваются подразделение организации, фамилия, имя и email-адрес всех работников компании «My Company», где фамилия или имя содержит подстроку $person. В этом примере используется булев фильтр для сообщения серверу о поиске информации в более чем одном атрибуте.

Пример 1. LDAP-поиск

Начиная с 4.0.5, можно проводить также параллельные поиски. Для этого используйте массив идентификаторов ссылок, а не просто одиночный идентификатор, в качестве первого аргумента. Если вам не нужен одно и то же базовое DN и тот же фильтр для всех поисков, вы можете также использовать массив базовых DNs и/или массив фильтров. Эти массивы обязаны быть того же размера, что и массив идентификаторов ссылок, поскольку первые вхождения массивов используются для первого поиска, вторые вхождения — для второго, и так далее. При выполнении параллельных поисков возвращается массив идентификаторов результатов поисков, если только не было ошибки — тогда вхождение, соответствующее поиску, будет FALSE. Это очень напоминает нормально возвращённое значение, но идентификатор результата всегда возвращается, если поиск был выполнен. В редких случаях нормальный поиск возвращает FALSE, в то врем как параллельный поиск возвращает идентификатор.

ldap_search

ldap_search — Search LDAP tree

Описание

Performs the search for a specified filter on the directory with the scope of LDAP_SCOPE_SUBTREE. This is equivalent to searching the entire directory.

From 4.0.5 on it’s also possible to do parallel searches. To do this you use an array of link identifiers, rather than a single identifier, as the first argument. If you don’t want the same base DN and the same filter for all the searches, you can also use an array of base DNs and/or an array of filters. Those arrays must be of the same size as the link identifier array since the first entries of the arrays are used for one search, the second entries are used for another, and so on. When doing parallel searches an array of search result identifiers is returned, except in case of error, then the entry corresponding to the search will be FALSE. This is very much like the value normally returned, except that a result identifier is always returned when a search was made. There are some rare cases where the normal search returns FALSE while the parallel search returns an identifier.

Читать еще:  Matlab нечеткий регулятор

Список параметров

An LDAP link identifier, returned by ldap_connect() .

The base DN for the directory.

The search filter can be simple or advanced, using boolean operators in the format described in the LDAP documentation (see the » Netscape Directory SDK for full information on filters).

An array of the required attributes, e.g. array(«mail», «sn», «cn»). Note that the «dn» is always returned irrespective of which attributes types are requested.

Using this parameter is much more efficient than the default action (which is to return all attributes and their associated values). The use of this parameter should therefore be considered good practice.

Should be set to 1 if only attribute types are wanted. If set to 0 both attributes types and attribute values are fetched which is the default behaviour.

Enables you to limit the count of entries fetched. Setting this to 0 means no limit.

This parameter can NOT override server-side preset sizelimit. You can set it lower though.

Some directory server hosts will be configured to return no more than a preset number of entries. If this occurs, the server will indicate that it has only returned a partial results set. This also occurs if you use this parameter to limit the count of fetched entries.

Sets the number of seconds how long is spend on the search. Setting this to 0 means no limit.

This parameter can NOT override server-side preset timelimit. You can set it lower though.

Specifies how aliases should be handled during the search. It can be one of the following:

  • LDAP_DEREF_NEVER — (default) aliases are never dereferenced.
  • LDAP_DEREF_SEARCHING — aliases should be dereferenced during the search but not when locating the base object of the search.
  • LDAP_DEREF_FINDING — aliases should be dereferenced when locating the base object but not during the search.
  • LDAP_DEREF_ALWAYS — aliases should be dereferenced always.

Возвращаемые значения

Returns a search result identifier or FALSE on error.

ldap_search — Поиск по LDAP дереву

(PHP 4, PHP 5, PHP 7)

ldap_search — Поиск по LDAP дереву

Описание

Выполняет поиск для указанного фильтра в директории с границами LDAP_SCOPE_SUBTREE . Эквивалентно поиску по всему каталогу.

Начиная с 4.0.5 также возможно производить параллельный поиск. Чтобы это сделать , необходимо использовать в качестве первого параметра массив идентификаторов ссылок, а не единственный идентификатор. Если необходимости использовать то же самое основное DN и тот же самый фильтр для всех поисков нет, то можно использовать массив базовых DN и/или массив фильтров. Эти массивы должны иметь такой же размер, как и массив идентификаторов ссылок, так как первые записи массивов используются для одного поиска, вторые записи используются для другого и так далее. При выполнении параллельного поиска возвращается массив идентификаторов результатов поиска, кроме ошибочных случаев, тогда запись, соответствующая поиску, будет равна FALSE . Это похоже на обычный поиск, когда возвращается значение, за исключением того, что идентификатор результата всегда возвращается после проведения поиска. Есть некоторые редкие случаи, куда обычный поиск возвращает FALSE , в то время как параллельный поиск возвращает идентификатор.

Список параметров

Идентификатор ссылки LDAP, возвращенный ldap_connect() .

Базовое DN для каталога.

Поисковый фильтр может быть простым или расширенным, используя булевы операторы в формате, описанном в документации LDAP (см. » Netscape Directory SDK для полной информации о фильтрах).

Читать еще:  Php fopen utf 8

Массив необходимых атрибутов, например, array(«mail», «sn», «cn»). Обратите внимание, что «dn» всегда возвращается, независимо от того, какие типы атрибутов требуются.

Использование этого параметра намного более эффективно, чем действие по умолчанию (которое должно возвратить все атрибуты и присвоенные им значения). Поэтому использование этого параметра нужно считать хорошей практикой.

Должен быть равен 1, если требуются типы атрибута. Если равен 0, то, по умолчанию, выбираются и типы атрибутов и значения.

Позволяет ограничить количество выбранных записей. Установка этого параметра равным 0 означает, что ограничение отсутствует.

Замечание:

Этот параметр НЕ может переопределять предустановку sizelimit на стороне сервера. Хотя его можно установить ниже.

Некоторые хосты серверов каталогов будут сконфигурированы так, чтобы возвратить не больше, чем предварительно установленное число записей. Если это произойдет, то сервер укажет, что только возвратил частичный набор результатов. Это также происходит, если Вы используете этот параметр, чтобы ограничить количество выбранных записей.

Устанавливает число секунд, ограничивающее процесс поиска. Установка этого параметра равным 0 означает, что ограничение отсутствует.

Замечание:

Этот параметр НЕ может переопределять предустановку timelimit на стороне сервера. Хотя его можно установить ниже.

Определяет как псевдонимы должны быть обработаны во время поиска. Может быть одним из следующих:

  • LDAP_DEREF_NEVER — (по умолчанию) псевдонимы никогда не разыменовываются.
  • LDAP_DEREF_SEARCHING — псевдонимы должны быть разыменованы во время поиска, но не при определении местоположения базового объекта поиска.
  • LDAP_DEREF_FINDING — псевдонимы должны быть разыменованы при определении местоположения базового объекта, но не во время поиска.
  • LDAP_DEREF_ALWAYS — псевдонимы должны всегда разыменовываться.

Возвращаемые значения

Возвращает идентификатор результата поиска или FALSE в случае ошибки.

Примеры

Пример ниже получает организационную единицу, фамилию, имя и адрес электронной почты для всех людей в «My Company», где фамилия или имя содержат подстроку $person . Этот пример использует логический фильтр, чтобы сказать серверу, что нужно искать информацию больше, чем в одном атрибуте.

Пример работы с LDAP-каталогом с помощью php API

Левинца Егор, 06 апреля 2012 года.

В порядке эксперимента, а также чтобы оказать помощь человеку в его затруднении, решил написать небольшую утилитку для отображения пользователей (а точнее, учётных записей пользователей), хранящихся в каталоге LDAP, по группам. Эксперимент состоял в том, чтобы обратиться к каталогу и получить из него данные через php API, чего я раньше не делал. Зная общие принципы взаимодействия с LDAP-каталогами и имея опыт написания подобных программ на perl API (с использованием модуля Net::LDAP), сделать это оказалось несложно. Все же я решил описать свою работу — возможно, она поможет кому-нибудь в разработке php-программ, взаимодействующих с LDAP-каталогом.

Исходные данные: имеется каталог (базовый DN dc=mycompany,dc=ru) со «стандартной» структурой для интеграции с samba: сведения об учётных записях пользователей хранятся в ветке ou=Users,dc=myconpany,dc=ru, сведения о группах пользователей — в ветке ou=Groups,dc=mycompany,dc=ru. Основная задача: отобразить нестандартную древовидную структуру: на первом уровне список групп, на втором — принадлежащие этим группам пользователи. Факультативная задача: при выборе пользователя из списка вывести некоторые сведения по нему.

Для упрощения примера подразумевается, что группы строятся на структурном объектном классе posixGroup , атрибут членства в группе — memberUid , значение которого совпадает с атрибутом uid учётной записи пользователя. Если у Вас за членство в группах и учётные записи пользователей отвечают другие атрибуты — измените код программы под Ваши настройки.

LDAP — относительно простой протокол с небольшим количеством операций. В нашем примере мы не собираемся изменять содержимое каталога (осуществляем доступ только для чтения), поэтому вся работа с каталогом будет выполнена за 4 операции: соединение с сервером каталога (connect), подключение к каталогу (bind), выполнение поиска необходимых нам данных (search) с выводом результатов, и, наконец, отключение от сервера (unbind). Все эти операции реализованы в php функциями с «говорящими» названиями: ldap_connect() , ldap_bind() , ldap_search() и ldap_unbind() . Эти и другие функции работы с LDAP в php описаны в соответствующей странице документации по php. Описаны, кстати, довольно неплохо, с хорошими примерами.

Поскольку при выполнении основной и факультативной задач осуществляются абсолютно одинаковые операции соединения, подключения и отключения от сервера, я решил вынести их в основную часть программы, а различающиеся операции поиска и отображения полученных в результате поиска данных — в отдельные функции. В первой функции get_main() производится поиск сведений о группах в ветке ou=Groups,dc=mycompany,dc=ru. Найденные группы, а также члены каждой из групп сортируются по алфавиту и выводится html-страница с древовидной структурой. Чтобы не изобретать велосипедов с отображением древовидной структуры, я воспользовался готовым модулем dhtmlxTree библиотеки компонентов dhtmlx. Вызов второй функции get_userinfo() выполняется при обращении к программе из ajax-запроса, генерируемого при нажатии на пользователя — члена группы в выведенной в браузер html-странице. В этой функции выполняется поиск в ветке ou=Users,dc=myconpany,dc=ru на совпадение имени пользователя с содержимым атрибута uid. Выбранные в результате поиска атрибуты записи пользователя оформляются в виде таблицы и загружаются в соответствующее информационное поле на html-странице.

Читать еще:  Matlab основные команды

‘; // Вывод таблицы с запрашиваемыми данными echo ‘

Выглядит это так:

Код программы с библиотеками dhtmlx и набором иконок можно скачать одним архивом здесь (

ldap_search

(PHP 4, PHP 5, PHP 7)

ldap_search — Поиск по LDAP дереву

Описание

Выполняет поиск для указанного фильтра в директории с границами LDAP_SCOPE_SUBTREE . Эквивалентно поиску по всему каталогу.

Начиная с 4.0.5 также возможно производить параллельный поиск. Чтобы это сделать, необходимо использовать в качестве первого параметра массив идентификаторов ссылок, а не единственный идентификатор. Если необходимости использовать то же самое основное DN и тот же самый фильтр для всех поисков нет, то можно использовать массив базовых DN и/или массив фильтров. Эти массивы должны иметь такой же размер, как и массив идентификаторов ссылок, так как первые записи массивов используются для одного поиска, вторые записи используются для другого и так далее. При выполнении параллельного поиска возвращается массив идентификаторов результатов поиска, кроме ошибочных случаев, тогда запись, соответствующая поиску, будет равна FALSE . Это похоже на обычный поиск, когда возвращается значение, за исключением того, что идентификатор результата всегда возвращается после проведения поиска. Есть некоторые редкие случаи, когда обычный поиск возвращает FALSE , в то время как параллельный поиск возвращает идентификатор.

Список параметров

Идентификатор ссылки LDAP, возвращенный ldap_connect() .

Базовое DN для каталога.

Поисковый фильтр может быть простым или расширенным, используя булевы операторы в формате, описанном в документации LDAP (см. » Netscape Directory SDK или » RFC4515 для полной информации о фильтрах).

Массив необходимых атрибутов, например, array(«mail», «sn», «cn»). Обратите внимание, что «dn» всегда возвращается, независимо от того, какие типы атрибутов требуются.

Использование этого параметра намного более эффективно, чем действие по умолчанию (которое должно возвратить все атрибуты и присвоенные им значения). Поэтому использование этого параметра считается хорошей практикой.

Должен быть равен 1, если требуются только типы атрибута. Если равен 0, то, по умолчанию, выбираются и типы атрибутов и значения.

Позволяет ограничить количество выбранных записей. Установка этого параметра равным 0 означает, что ограничение отсутствует.

Замечание:

Этот параметр НЕ может переопределять предустановку sizelimit на стороне сервера. Хотя его можно установить ниже.

Некоторые хосты серверов каталогов будут сконфигурированы так, чтобы возвратить не больше, чем предварительно установленное число записей. Если это произойдет, то сервер укажет, что возвратил только частичный набор результатов. Это также происходит, если Вы используете этот параметр чтобы ограничить количество выбранных записей.

Устанавливает число секунд, ограничивающее процесс поиска. Установка этого параметра равным 0 означает, что ограничение отсутствует.

Замечание:

Этот параметр НЕ может переопределять предустановку timelimit на стороне сервера. Хотя его можно установить ниже.

Определяет как псевдонимы должны быть обработаны во время поиска. Может быть одним из следующих:

  • LDAP_DEREF_NEVER — (по умолчанию) псевдонимы никогда не разыменовываются.
  • LDAP_DEREF_SEARCHING — псевдонимы должны быть разыменованы во время поиска, но не при определении местоположения базового объекта поиска.
  • LDAP_DEREF_FINDING — псевдонимы должны быть разыменованы при определении местоположения базового объекта, но не во время поиска.
  • LDAP_DEREF_ALWAYS — псевдонимы должны разыменовываться всегда.

Массив управляющих констант LDAP для отправки в запросе.

Возвращаемые значения

Возвращает идентификатор результата поиска или FALSE в случае ошибки.

Ссылка на основную публикацию
Adblock
detector