PHP: ldap_compare - Manual

downloads | documentation | faq | getting help | mailing lists | reporting bugs | php.net sites | links | conferences | my php.net

search for in the

ldap_connect ldap_close

Last updated: Sat, 27 Jan 2007

view this page in

# ldap_compare

(PHP 4 >= 4.0.2, PHP 5)

ldap_compare -- Compare value of attribute found in entry specified with DN

## Description

mixed ldap_compare ( resource link_identifier, string dn, string attribute, string value )

Returns `TRUE` if `value` matches otherwise returns `FALSE`. Returns -1 on error.

ldap_compare() is used to compare `value` of `attribute` to value of same attribute in LDAP directory entry specified with `dn`.

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

Пример 1. 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.";
}
?>`

Внимание
ldap_compare() can NOT be used to compare BINARY values!

> Замечание: This function was added in 4.0.2.

add a note User Contributed Notes
ldap_compare
oudejans at zeelandnet dot nl
11-Apr-2005 05:10
`With PHP 4.3.* is Password no longer a valid attribute.. try to use userPassword`
chuck+ldap at 2006 dot snew dot com
05-Aug-2004 10:08
`Just a side note that this is not how you'd ever AUTHENTICATE someone, just an example code.
The common way to authenticate is to get the users name, use search and perhaps selection to the user to get her DN (single value) then attempt to BIND to the ldapserver using that dn and the offered password. If it works, then it's the right password.
Note that the password offered MUST NOT BE EMPTY or many LDAPs will presume you meant to authenticate anonymously and it will succeed, leaving you thinking it's the right password.`
Brian Kerhin &lt;kerhin at bigfoot dot com&gt;
31-Jan-2001 06:13
`Not probably, will. With PHP 4.0.4 and openldap 1.2.9 this little script, even with the correct attributes for the password does not do the job. Would superb if it did!`
334647 at swin dot edu dot au
25-Oct-2000 07:06
`Interesting example. Apart from the fact that very few people would allow comaprisions of the password attribute for security reasons. The attribute name of "password" does not match the usual schemas.
The usual method of user id + password verification is to attempt to bind using the supplied credentials.
Ldap compare on password values will probably fail with ns directroy server and openldap v2+ becuase of server support for password hashing.`
add a note
ldap_connect ldap_close

Last updated: Sat, 27 Jan 2007
show source | credits | stats | sitemap | contact | advertising | mirror sites
Copyright © 2001-2007 The PHP Group
All rights reserved.
This mirror generously provided by: Yahoo! Inc.
Last updated: Sat Mar 10 09:32:46 2007 PST