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.ldap_compare
Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.
ldap_compare
Референца за `function.ldap-compare.php` со подобрена типографија и навигација.
ldap_compare
(PHP 4 >= 4.0.2, PHP 5, PHP 7, PHP 8)
ldap_compare — (PHP 4 >= 4.0.2, PHP 5, PHP 7, PHP 8)
= NULL
LDAP\Connection
$ldap,string
$dn,string
$attribute,string
$value,?array
$controls = null): bool|int
Спореди value of attribute
Спореди ја вредноста на атрибутот пронајден во записот специфициран со DN
Параметри
ldap-
Еден LDAP\Connection инстанца, вратена од ldap_connect().
dn-
. Може исто така да додава или отстранува атрибути.
attribute-
Името на атрибутот.
value-
со вредноста на истиот атрибут во записот во LDAP директориумот.
controls-
Низа од LDAP контроли сега е nullable; претходно, стандардно беше
Вратени вредности
Патеката до PHP скриптата што треба да се провери. true if value Споредената вредност.
falseсе совпаѓа инаку враќа
Дневник на промени
| Верзија | = NULL |
|---|---|
| 8.1.0 |
На ldap параметарот очекува LDAP\Connection
инстанца сега; претходно, валидна ldap link resource се очекуваше.
|
| 8.0.0 |
controls Пример #1 LDAP пребарување [].
|
| 7.3.0 |
Поддршка за controls added
|
Примери
. Враќа -1 при грешка.
Следниот пример покажува како да проверите дали даден пасворд се совпаѓа со оној дефиниран во записот специфициран со DN.
<?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() Пример #1 Целосен пример за проверка на пасворд
Белешки од корисници 4 белешки
With PHP 4.3.* is Password no longer a valid attribute.. try to use userPasswordNot 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!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.