2013-06-25 105 views
4

我成功地查詢我們的活動目錄與下面的代碼的用戶:LDAP過濾器的distinguishedName

$filter = (&(objectCategory=person)(samaccountname=someusername)); 
$fields = array("samaccountname","mail","manager","department","displayname","objectGUID"); 

$user = ldap_search($ldapconnection, $baseDn, $filter, $fields); 

結果數組給出了manager屬性此值:

CN=McBossy\, Boss,OU=Users,OU=CentralOffice,DC=ds,DC=example,DC=com 

這看起來像一個傑出的名字給我。但是,當我嘗試查詢經理的紀錄,

$filter = (&(objectCategory=person)(dn='CN=McBossy\, Boss,OU=Users,OU=CentralOffice,DC=ds,DC=example,DC=com')); 

$manager = ldap_search($ldapconnection, $baseDn, $filter, $fields); 

查詢失敗PHP Warning: ldap_search(): Search: Bad search filter

我已經嘗試了多種可能性,包括不同的報價,更括號,用distinguishedName而不是dn等。

我在做什麼錯,什麼是正確的方式來獲得經理的記錄?

回答

7

dn不是屬性。只有屬性類型,OID和名稱可用於過濾器。

當您獲取manager屬性時,要獲取作爲管理器的DN的屬性,請將manager屬性的值用作搜​​索請求中的基礎對象。將搜索範圍設置爲BASE,將篩選器設置爲(&)(objectClass=*)並請求所需的屬性。然後將比搜索請求傳輸到服務器並解釋響應。

+0

好的。然後,鑑於與用戶經理的唯一聯繫(就我所知)是「經理」屬性,我如何使用該信息獲取經理的用戶記錄? – dnagirl

+0

使用類似以下的過濾器:'(manager = cn = user,dc = example,dc = com)' –

+0

難道不會找到所有將我當前用戶作爲經理的人嗎?我想獲得我當前用戶的經理。對不起,如果我很厚。 – dnagirl