What is the best way to start a search for the current user to get all attributes, including related groups in Active Directory using LDAP / PHP?
For attributes, basically just the first name, last name, and display name.
For related groups, only groups in which the user is a member, for example, the memberOf function.
I tried several options, but cannot find the right filter / search combination, and most examples cover searching user lists where there is a known group.
I tried to run this after successfully binding:
$attributes = array("displayname"); $filter = "(&(sAMAccountName=$username))"; $result = ldap_search($ds, $ldapconfig['basedn'], $filter, $attributes); $entries = ldap_get_entries($ds, $result); if($entries["count"] > 0){ echo "displayName: ".$entries[0]['displayname'][0]."<br/>"; } else { echo("msg:'".ldap_error($ds)."'</br>"); }
It returns the following error: "There is no such object."
UPDATE:
This is the last block I tried and can get the results when I print the $ info variable, but the for clause is still wrong. I changed basen to dc attributes only:
$filter="($SearchField=$SearchFor)"; $sr=ldap_search($ds, $basedn, $filter, $LDAPFieldsToFind); $info = ldap_get_entries($ds, $sr); if($info["count"] > 0) { for ($x=0; $x<$info["count"]; $x++) { $sam=$info[$x]['samaccountname'][0]; $giv=$info[$x]['givenname'][0]; $tel=$info[$x]['telephonenumber'][0]; $email=$info[$x]['mail'][0]; $nam=$info[$x]['cn'][0]; $dir=$info[$x]['homedirectory'][0]; $dir=strtolower($dir); $pos=strpos($dir,"home"); $pos=$pos+5; if (stristr($sam, $SearchFor) && (strlen($dir) > 8)) { print "\nActive Directory says that:\n"; print "CN is: ".$nam." \n"; print "SAMAccountName is: ".$sam." \n"; print "Given Name is: ".$giv." \n"; print "Telephone is: ".$tel." \n"; print "Home Directory is: ".$dir." \n"; } } }
Result of print_r:
( [count] => 1 [0] => Array ( [cn] => Array ( [count] => 1 [0] => George ) [0] => cn [givenname] => Array ( [count] => 1 [0] => George ) [1] => givenname [memberof] => Array ( [count] => 4 [0] => CN=EQCStaff,CN=Users,DC=EQC,DC=local [1] => CN=RDS Users,OU=Security Groups,OU=Service,DC=EQC,DC=local [2] => CN=SFTP Client Folders,OU=Security Groups,OU=Service,DC=EQC,DC=local [3] => CN=EQC Staff,OU=Security Groups,OU=Service,DC=EQC,DC=local ) [2] => memberof [samaccountname] => Array ( [count] => 1 [0] => gortiz ) [3] => samaccountname [mail] => Array ( [count] => 1 [0] => user@domain.com ) [4] => mail [count] => 5 [dn] => CN=George,OU=Users,OU=Accounts,DC=EQC,DC=local ) )