2015-10-14 104 views
0

我需要使用ldap從Active Directory獲取部門的值。 一種方法是使用此篩選器$filter = '(objectClass=user)';並將ldap_search()屬性參數設置爲array('department') 問題是我收到所有條目,其中一些條目是重複的。有人有一些建議嗎?如果有幫助,我正在使用Symfon2,並且我有ldap庫如何使用PHP獲取活動目錄中的部門列表?

+0

究竟是什麼問題了嗎?你有使用LDAP的問題,或者你不知道如何使用PHP刪除重複項? –

+0

我不想刪除重複項,我需要一個查詢我可以用來獲取所有部門沒有重複的,所以我不需要失去時間以後刪除它們。 –

+0

你能編輯你的文章幷包含你正在使用的當前代碼嗎? – Twisty

回答

0

無法向AD詢問值爲department的重複數據刪除列表。最接近你可以做的是這樣一個過濾器:(&(objectCategory=person)(objectClass=user)(department=*))然後重複刪除列表客戶端。請注意,例如,這不會爲您的聯繫人,組或計算機上的部門值。如果您還需要這些,則需要更新查詢以包含您感興趣的對象類型。

+0

是的,但是使用這個我會得到所有用戶的所有部門。我認爲也許有一種方法可以提取有關用戶的信息,並從那裏採取我想要的任何信息,但只是查詢我想要的特定字段。 –

+1

不幸的是,這是不可能的。 –

1

使用您的篩選器爲具有特定屬性(您的案例中的部門)的用戶提取LDAP條目。所以你的結果是用戶節點的列表。沒有辦法將這個用戶節點列表減少到具有不同的屬性值列表,因爲這意味着將用戶從列表中移除。在您明確搜索所有用戶時應刪除哪些內容?

所以去的唯一方法是使用如下(未經測試)的代碼片段的東西得到這樣的搜索結果列表:

$departments = []; 
$entry = ldap_first_entry($connect, $result); 
do { 
    $attributes = ldap_get_attributes($connect, $entry); 
    $departments[$attributes['department'][0]] = $attributes['department'][0]; 
} while ($entry = ldap_next_entry($connect, $entry)); 
print_R($departments);