PHP 8.4.0 RC3 available for testing

ldap_get_values

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

ldap_get_valuesПолучает все значения из записи результата

Описание

ldap_get_values(LDAP\Connection $ldap, LDAP\ResultEntry $entry, string $attribute): array|false

Функция Считывает все значения атрибута в записи результата.

Для вызова функции требуется запись entry, поэтому перед вызовом требуется запустить функцию LDAP-поиска и вызывать функцию, которая получит отдельную запись.

Приложение либо будет жестко запрограммировано на поиск конкретных атрибутов наподобие "surname" или "mail", либо придётся вызывать функцию ldap_get_attributes(), чтобы разобрать, какие атрибуты существуют для записи.

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

ldap

Экземпляр класса LDAP\Connection, который возвращает функция ldap_connect().

entry

Экземпляр класса LDAP\ResultEntry.

attribute

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

Функция возвращает массив значений для атрибута в случае успешного выполнения или false, если возникла ошибка. Число значений находят по индексу "count" в результирующем массиве. Отдельные значения доступны по целочисленным индексам в массиве. Значение первого индекса равно 0.

LDAP-сервер разрешает хранить больше одной записи для атрибута, поэтому разрешается, например, сохранить много адресов электронной почты для записи каталога одного человека, каждый из которых маркирован атрибутом "mail".

     return_value["count"] = число значений атрибута
     return_value[0] = первое значение атрибута
     return_value[i] = i-ое значение атрибута 
    

Список изменений

Версия Описание
8.1.0 Параметр ldap теперь ожидает экземпляр класса LDAP\Connection; раньше параметр ждал ресурс (resource) ldap link .
8.1.0 Параметр entry теперь ожидает экземпляр класса LDAP\ResultEntry; раньше параметр ждал ресурс (resource) ldap result entry.

Примеры

Пример #1 Список всех значений атрибута "mail" для записи каталога

<?php

// Переменная $ds — допустимый экземпляр класса LDAP\Connection

// Переменная $sr — правильный результат поиска в LDAP-директории

// Переменная $entry — правильный идентификатор записи из вызова функции,
// которая вернула запись директории

$values = ldap_get_values($ds, $entry, "mail");

echo
"Количество адресов эл. почты для этой записи: " . $values["count"] . "<br />";

for (
$i=0; $i < $values["count"]; $i++) {
echo
$values[$i] . "<br />";
}

?>

Смотрите также

  • ldap_get_values_len() - Получить все бинарные значения из записи результата

Добавить

Примечания пользователей 2 notes

up
2
software at inebria dot com
23 years ago
It wasn't immediately obvious to me that the ldap_get_values function does not work with binary data - only strings. If you fetch binary data with ldap_get_values you don't get a warning - just some trash. For binary data you have to use ldap_get_values_len.
up
0
viper_sb at IGETTOMUCHSPAMhotmail dot com
21 years ago
Well this took me a while to find the problem, so I'm posting in case someone else runs in to this.

$sr = ldap_search($ds, "cn=me", "(objectclass=*)");
$entry = ldap_first_entry($ds, $sr);
do {
// do other stuff
$sr = "something else now";
$values = ldap_get_values($ds, $entry, "attirib1");
// do other stuff
} while ($entry = ldap_next_entry($ds, $entry));

If you change the search resource $sr to something else even though it's not used again it will kill the page it'll be a blank page and if you view the code you'll get different things depending on something no idea what.

This kepted happening I had forgotten I had used $sr so I was using it again and it would just not show the page whenever I used ldap_get_values, if this is a feature it would be nice to know. I haven't seen it happen with other functions.
To Top