PHP Doku:: Vergleicht gefundenen Wert eines Merkmal in einem Eintrag, der durch Angabe von dn bestimmt wird. - function.ldap-compare.html

Verlauf / Chronik / History: (1) anzeigen

Sie sind hier:
Doku-StartseitePHP-HandbuchFunktionsreferenzSonstige DiensteLightweight Directory Access ProtocolLDAP Funktionenldap_compare

Ein Service von Reinhard Neidl - Webprogrammierung.

LDAP Funktionen

<<ldap_close

ldap_connect>>

ldap_compare

(PHP 4 >= 4.0.2, PHP 5)

ldap_compare Vergleicht gefundenen Wert eines Merkmal in einem Eintrag, der durch Angabe von dn bestimmt wird.

Beschreibung

bool ldap_compare ( resource $Verbindungs-Kennung , string $dn , string $merkmal , string $wert )

Rückgabewert: wahr, wenn der wert gefunden wird, ansonsten FALSE. Tritt ein Fehler auf, wird -1 zurückgegeben.

ldap_compare() vergleicht den wert eines merkmal mit dem Wert des gleichen Merkmals in dem LDAP Verzeichniseintrag der durch dn bestimmt wurde.

Das folgende Beispiel zeigt, wie überprüft wird, ob ein gegebenes Kennwort mit dem Kennwort übereinstimmt oder nicht, das in dem durch DN bestimmten Eíntrag gespeichert ist.

Beispiel #1 Komplettes Beispiel einer Kennwort-Überprüfung

<?php

$ds
=ldap_connect("localhost");  // Annahme: der LDAP Server befindet
                                // sich auf diesem Host

if ($ds) {

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

        
// Daten vobereiten
        
$dn "cn=Helga Olsen, ou=Meine Einheit, o=Meine Firma, c=FI";
        
$value "Geheimes Kennwort";
        
$attr "kennwort";

        
// vergleiche die Werte
        
$r=ldap_compare($ds$dn$attr$value);

        if (
$r === -1) {
            echo 
"Fehler: ".ldap_error($ds);
        } elseif (
$r === TRUE) {
            echo 
"Kennwort korrekt.";
        } elseif (
$r === FALSE) {
            echo 
"Falsch geraten! Kennwort nicht korrekt.";
        }

    } else {
        echo 
"Keine Bindung zum LDAP Server möglich.";
    }

    
ldap_close($ds);

} else {
    echo 
"Keine Verbindung zum LDAP Server möglich.";
}
?>
Warnung

ldap_compare() kann NICHT für Vergleiche von BINÄREN Werten benutzt werden!

Hinweis:

Diese Funktion wurde in 4.0.2 hinzugefügt.


4 BenutzerBeiträge:
- Beiträge aktualisieren...
oudejans at zeelandnet dot nl
11.04.2005 14:10
With PHP 4.3.* is Password no longer a valid attribute.. try to use userPassword
chuck+ldap at 2006 dot snew dot com
6.08.2004 7: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 <kerhin at bigfoot dot com>
31.01.2001 15: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
26.10.2000 4: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.



PHP Powered Diese Seite bei php.net
The PHP manual text and comments are covered by the Creative Commons Attribution 3.0 License © the PHP Documentation Group - Impressum - mail("TO:Reinhard Neidl",...)