2012-03-06 153 views

回答

5

你可能想這樣做:

$adldap = new adLDAP(); 
$usernames = $adldap->user()->all(); 

$users = array(); 
foreach ($usernames as $username) 
{ 
    $userInfo = $adldap->user()->infoCollection($username); 
    $users[$username] = $userInfo; 
} 

all()方法是。

+0

有沒有辦法讓只有活躍(不是禁用)的用戶? – Sirber 2012-09-05 19:05:48

+0

@Sirber:'all()'方法需要'$ search'參數,我相信這個參數可以用來過濾列表。它應該是我認爲的常規LDAP過濾器。或者你可以在'enabled'屬性的'for'循環中過濾結果。 – 2012-10-19 15:13:14

1

假設目錄管理員將允許LDAP客戶端應用程序檢索 目錄中的所有條目,請從根 DSE中提取屬性namingContexts的值。該屬性的值(它是多值的)是該服務器支持的命名上下文或後綴。利用該信息,使用構建一個搜索:

  • 命名上下文
  • 大小限制0F 0(無的sizeLimit)
  • 的0(無限制時間)的時間限制
  • 一個過濾器,將匹配所有條目,例如,(objectClass=*)(&)
  • 一個範圍足以發現所有條目,大概subtree
  • 屬性的列表中選擇所需

針對每個namingContext構建搜索。同樣,假設目錄 管理員將允許LDAP客戶端搜索整個目錄,這些搜索將導致包含每個條目的響應。

有很多注意事項,如:

  • 這是由管理員允許?
  • 您的應用程序可以增長到足以處理數據(如果不是簡單尋呼結果 機制可能提供解決方案)。
  • 我被告知AD在LDAP客戶端上施加了1000的大小限制。即使這是真的, 也不應該使用目錄基礎設施或供應商的知識對LDAP客戶端進行編碼。做 這樣會導致難以維護的糟糕脆弱的代碼。所有的LDAP客戶端必須編碼爲 ,以達到IETF的LDAP理事會規定的標準。

欲瞭解更多信息,請參見:

+0

對不起,但我不明白。 我正在尋找一種方法來從AD獲取所有AD用戶,並使用PHP將它們存儲到數組中。 – pangi 2012-03-10 11:26:39