ldap_compare

Compare value of attribute found in entry specified with DN

&reftitle.description; ``bool``int```ldap_compare` `LDAP\Connection` `ldap` `string` `dn` `string` `attribute` `string` `value` ``array``null```controls`&null;

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

&reftitle.parameters;

`ldap`

- &ldap.parameter.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.

&reftitle.returnvalues;

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

&reftitle.changelog;

&Version; | &Description;
&ldap.changelog.ldap-object; &ldap.changelog.controls-nullable;
7.3.0 | Support for `controls` added

&reftitle.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

    $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.";
    }
    ?>

&reftitle.notes;

`ldap_compare` can NOT be used to compare BINARY values!