PHP - fonction ldap_search() du filtre. Comment rechercher un utilisateur
$_SERVER['REMOTE_USER'] renvoie le nom d'utilisateur de l'utilisateur connecté à un Active Directory. Je veux retrive ce utilisateurs des informations à l'aide de la fonction ldap_search().
C'est ce que j'ai maintenant:
$ad = //ldap_connection id
$filter = "(|(sn=$username*)(givenname=$username*))";
$attr = array("displayname", "mail", "mobile", "homephone", "telephonenumber", "streetaddress", "postalcode", "physicaldeliveryofficename", "l");
$dn = //OU, DC etc..
ldap_search($ad,$dn,$filter,$attr);
Cela fonctionne, mais je ne suis pas sûr que cela va fonctionner que si les deux utilisateurs ont presque les mêmes noms.
Comment puis-je seulement à la recherche de leur nom d'utilisateur unique, de sorte que j'ai toujours un seul utilisateur?
$filter = "(samaccountname=$username)"; <- est-ce correct? "samaccountname" est le nom d'utilisateur unique, à droite?
OriginalL'auteur horgen | 2010-05-28
Vous devez vous connecter pour publier un commentaire.
sAMAccountName
est le nom-attribut utilisé dans Active Directory, afin(&(objectClass=user)(sAMAccountName=%s))
serait le bon filtre pour vérifier le LDAP pour un nom d'utilisateur donné (avec%s
être remplacé par le nom d'utilisateur naturellement).S'il vous plaît être conscient que vous avez besoin pour gérer les caractères spéciaux dans
$username
pour éviter la malformation de filtres ou au pire malveillants LDAP injections (voir RFC 2254):OriginalL'auteur Stefan Gehrig
ldap_search()
trouverez toutes les entrées correspondantes, vous aurez à vérifier le résultat.Disons
$link
est votre lien à la base de données LDAP créé avecldap_connect()
ldap_get_entries($link, $result)Vous pouvez le vérifier comme ceci :
ou
OriginalL'auteur Serty Oan