如何使用PHP从LDAP目录中检索所有用户?

问题描述:

我试图从一个活动目录中获取所有用户的全名,我只管理了一个用户,就好像我想要执行登录功能一样,但是当我试图将我的代码概括给所有用户时,我无法使其工作。如何使用PHP从LDAP目录中检索所有用户?

这里是我的代码:

<?php 
// active directory 
$ldap_host = "xxx"; 
$ldap_port = "xxx"; 
// Active Directory DN 
$ldap_dn[] = "ou=xxx,DC=xxx,DC=xxx,DC=xx"; 
$ldap_dn[] = "ou=xxx,DC=xxx,DC=xxx,DC=xx"; 
// Domain, for purposes of constructing $user 
$ldap_usr_dom = "@xxx.xxx.xx"; 
// connect to active directory 
$ldap   = ldap_connect($ldap_host, $ldap_port); 
$ldap_id[] = $ldap; 
$ldap_id[] = $ldap; 
$username  = "xxx"; 
$password  = "xxx"; 
// verify user and password 
if ($bind = @ldap_bind($ldap, $username . $ldap_usr_dom, $password)) { 
    $filter = "(&(objectCategory=person)(sAMAccountName=" . $username . "))"; 
    $result = ldap_search($ldap_id, $ldap_dn, $filter) or exit("Unable to search LDAP server"); 
    foreach ($result as $value) { 
     if (ldap_count_entries($ldap, $value) > 0) { 
      $search = $value; 
      break; 
     } 
    } 

    if ($search) { 
     $entries = ldap_get_entries($ldap, $search); 
     for ($x = 0; $x < $entries['count']; $x++) { 
      if (!empty($entries[$x]['cn'][0])) { 
       $ad_users[] = array(
        'fullname' => trim($entries[$x]['cn'][0]) 
       ); 
       print_r($ad_users); 
       //print_r($entries); 
      } 
     } 
    } 
    ldap_unbind($ldap); // Clean up after ourselves. 
} 

$message .= "Retrieved " . count($ad_users) . " Active Directory users\n"; 
echo $message; 
?> 

我是新在此我

只需卸下标准,从您的过滤特定用户:

$filter = "(objectCategory=person)";