我需要使用ldap從Active Directory獲取部門的值。 一種方法是使用此篩選器$filter = '(objectClass=user)';
並將ldap_search()屬性參數設置爲array('department')
問題是我收到所有條目,其中一些條目是重複的。有人有一些建議嗎?如果有幫助,我正在使用Symfon2,並且我有ldap庫如何使用PHP獲取活動目錄中的部門列表?
回答
無法向AD詢問值爲department
的重複數據刪除列表。最接近你可以做的是這樣一個過濾器:(&(objectCategory=person)(objectClass=user)(department=*))
然後重複刪除列表客戶端。請注意,例如,這不會爲您的聯繫人,組或計算機上的部門值。如果您還需要這些,則需要更新查詢以包含您感興趣的對象類型。
是的,但是使用這個我會得到所有用戶的所有部門。我認爲也許有一種方法可以提取有關用戶的信息,並從那裏採取我想要的任何信息,但只是查詢我想要的特定字段。 –
不幸的是,這是不可能的。 –
使用您的篩選器爲具有特定屬性(您的案例中的部門)的用戶提取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);
究竟是什麼問題了嗎?你有使用LDAP的問題,或者你不知道如何使用PHP刪除重複項? –
我不想刪除重複項,我需要一個查詢我可以用來獲取所有部門沒有重複的,所以我不需要失去時間以後刪除它們。 –
你能編輯你的文章幷包含你正在使用的當前代碼嗎? – Twisty