2014-12-08 82 views
1

我想列表成员由一些CNLDAP活动目录PHP过滤

我usign过滤器,它的工作:

$filter="(&(objectCategory=user)(sAMAccountName=username)(memberOf=CN=g_jira,OU=Jira,OU=Groups,DC=office,DC=lamoda,DC=ru))"; 
    $result = ldap_search($ldap,"DC=office,DC=example,DC=ru",$filter); 
    ldap_sort($ldap,$result,"sn"); 
    $info = ldap_get_entries($ldap, $result); 
    var_dump($info); 

这不是为我工作,当我尝试只通过CN搜索用户。

$filter="(&(objectCategory=user)(sAMAccountName=username)(memberOf=CN=g_jira*))"; 
    $result = ldap_search($ldap,"DC=office,DC=example,DC=ru",$filter); 
    ldap_sort($ldap,$result,"sn"); 
    $info = ldap_get_entries($ldap, $result); 
    var_dump($info); 

2例如我越来越count = 0,什么是我的例子拨错,怎么只提供CN过滤器,并得到一些结果作为1例子吗?

+0

在用户条目的'memberOf'属性上可能没有'substring'索引。您是否有理由不想在查询过滤器中使用完全限定的组DN? – 2014-12-08 16:18:07

回答

2

只有在需要识别名称的情况下,您才能搜索CN。

为了达到你的目标,你必须先找到符合条件的所有组:

$filter = "(&(CN=g_jira*))";

一旦你得到所有的群体,你看他们的member属性,也许uniquify成员列表,以便您没有重复的内容,然后分别查询每个用户以获取用户的数据。

或者(这可能会更快取决于g_jira组的数量),你搜索上面解释了所有的组,然后进行搜索,你原本打算,但对于每个组的完整的识别名称。然后,合并返回的用户列表。