php8.5
Home/ Manual/ ldap / functions/ ldap_compare

ldap_compare

PHP function Edit on GitHub ✎

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

Compare value of attribute found in entry specified with DN

Description

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

Compare value of attribute with value of same attribute in an LDAP directory entry.

Parameters

ldap

Ldap

dn

The distinguished name of an LDAP entity.

attribute

The attribute name.

value

The compared value.

controls

Array of LDAP Controls to send with the request.

Return Values

Returns true if value matches otherwise returns false. Returns -1 on error.

Warning

Both true and -1 are truthy, so a plain truth test such as if (ldap_compare(...)) treats an error as a match. The result must be compared strictly against true.

Changelog

VersionDescription
7.3.0Support for controls added

Examples

The following example demonstrates how to check whether or not given password matches the one defined in DN specified entry.

Complete example of password check

php
<?php

$ds=ldap_connect("localhost");  // assuming the LDAP server is on this host

if ($ds) {

    // bind
    if (ldap_bind($ds)) {

        // prepare data
        $dn = "cn=Matti Meikku, ou=My Unit, o=My Company, c=FI";
        $value = "secretpassword";
        $attr = "password";

        // compare value
        $r=ldap_compare($ds, $dn, $attr, $value);

        if ($r === -1) {
            echo "Error: " . ldap_error($ds);
        } elseif ($r === true) {
            echo "Password correct.";
        } elseif ($r === false) {
            echo "Wrong guess! Password incorrect.";
        }

    } else {
        echo "Unable to bind to LDAP server.";
    }

    ldap_close($ds);

} else {
    echo "Unable to connect to LDAP server.";
}
?>

Notes

Warning

ldap_compare() can NOT be used to compare BINARY values!

Source: reference/ldap/functions/ldap-compare.xml · from the official PHP manual (php/doc-en)