2014-12-08 85 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組的數量),你搜索上面解釋了所有的組,然後進行搜索,你原本打算,但對於每個組的完整的識別名稱。然後,合併返回的用戶列表。