ldap_compare

(PHP 4 >= 4.0.2, PHP 5, PHP 7, PHP 8)

ldap_compareСравнивает значение атрибута, который найден в записи с DN-именем

Описание

function ldap_compare(
    LDAP\Connection $ldap,
    string $dn,
    string $attribute,
    string $value,
    ?array $controls = null
): bool|int

Функция сравнивает значение value атрибута attribute со значением того же атрибута в записи LDAP-каталога.

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

ldap

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

dn

Отличительное имя LDAP-объекта.

attribute

Имя атрибута.

value

Сравниваемое значение.

controls

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

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

Функция возвращает true, если значение value совпадает, иначе false. Функция возвращает значение -1 в случае ошибки.

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

Версия Описание
8.1.0 Параметр ldap теперь принимает объект LDAP\Connection; раньше параметр ждал ресурс (resource) ldap link .
8.0.0 Параметр controls теперь допускает значение null; раньше значение по умолчанию равнялось [].
7.3.0 Добавлена поддержка параметра controls.

Примеры

Следующий пример показывает, как проверить, совпадает ли пароль с паролем, который определили в заданной записи DN.

Пример #1 Полный пример проверки пароля

<?php

$ds = ldap_connect("localhost");  // Предположим, что LDAP-сервер находится по этому адресу

if ($ds) {
    // Привязка к LDAP-каталогу
    if (ldap_bind($ds)) {

        // Подготовка данных
        $dn = "cn=Matti Meikku, ou=My Unit, o=My Company, c=FI";
        $value = "secretpassword";
        $attr = "password";

        // Сравнение данных
        $r=ldap_compare($ds, $dn, $attr, $value);

        if ($r === -1) {
            echo "Ошибка: " . ldap_error($ds);
        } elseif ($r === true) {
            echo "Пароль верный.";
        } elseif ($r === false) {
            echo "Неправильное предположение! Пароль не верен.";
        }

    } else {
        echo "Невозможно привязаться к серверу LDAP.";
    }

    ldap_close($ds);

} else {
    echo "Невозможно соединиться с сервером LDAP.";
}

?>

Примечания

Внимание

Функцию ldap_compare() нельзя вызывать для сравнения ДВОИЧНЫХ значений!