(PHP 4, PHP 5, PHP 7, PHP 8)
ldap_list — 單層搜尋
$ldap
,$base
,$filter
,$attributes
= [],$attributes_only
= 0,$sizelimit
= -1,$timelimit
= -1,$deref
= LDAP_DEREF_NEVER
,$controls
= null
使用 LDAP_SCOPE_ONELEVEL
的作用範圍,對目錄執行指定 filter
的搜尋。
LDAP_SCOPE_ONELEVEL
表示搜尋應該只返回緊接在呼叫中給定 base
下一級的資訊。(相當於輸入「ls」並取得目前工作目錄中的檔案和資料夾清單。)
也可以執行平行搜尋。在這種情況下,第一個參數應該是一個 LDAP\Connection 實例陣列,而不是單個實例。如果搜尋不應全部使用相同的 base DN 和過濾器,則可以傳遞 base DN 陣列和/或過濾器陣列作為參數。這些陣列的大小必須與 LDAP\Connection 實例陣列的大小相同,因為陣列的第一個元素用於一次搜尋,第二個元素用於另一次搜尋,依此類推。執行平行搜尋時,會返回一個 LDAP\Result 實例陣列,除非發生錯誤,此時返回值將為 false
。
ldap
一個 LDAP\Connection 實例,由 ldap_connect() 返回。
base
目錄的 base DN。
filter
attributes
所需屬性的陣列,例如 array("mail", "sn", "cn")。請注意,「dn」總是會返回,無論請求哪種類型的屬性。
使用此參數比預設動作(返回所有屬性及其關聯值)更有效率。因此,應該將使用此參數視為良好實務。
attributes_only
如果只需要屬性類型,則應設為 1。如果設為 0,則會提取屬性類型和屬性值,這是預設行為。
sizelimit
讓您可以限制提取的項目數量。將此設定為 0 表示沒有限制。
注意:
此參數無法覆寫伺服器端預設的 sizelimit。但是您可以將其設定為較低的值。
某些目錄伺服器主機將被設定為返回不超過預設數量的項目。如果發生這種情況,伺服器將指示它只返回了部分結果集。如果您使用此參數來限制提取的項目數量,也會發生這種情況。
timelimit
設定搜尋花費的秒數。將此設定為 0 表示沒有限制。
注意:
此參數無法覆寫伺服器端預設的 timelimit。但是您可以將其設定為較低的值。
deref
指定在搜尋期間應如何處理別名。可以是以下其中之一
LDAP_DEREF_NEVER
-(預設)永遠不會取消參考別名。
LDAP_DEREF_SEARCHING
- 在搜尋期間應取消參考別名,但在定位搜尋的基礎物件時則不應取消參考。
LDAP_DEREF_FINDING
- 在定位基礎物件時應取消參考別名,但在搜尋期間則不應取消參考。
LDAP_DEREF_ALWAYS
- 應始終取消參考別名。
controls(控制項)
要與請求一起發送的 LDAP 控制項 陣列。
傳回 LDAP\Result 實例、LDAP\Result 實例陣列,或是在失敗時傳回 false
。
版本 | 說明 |
---|---|
8.1.0 | ldap 參數現在需要 LDAP\Connection 實例;先前需要有效的 ldap link 資源。 |
8.1.0 | 現在傳回 LDAP\Result 實例;先前傳回 資源。 |
8.0.0 |
controls 現在可以為 null;先前預設為 [] 。 |
7.3.0 | 新增了對 controls 的支援 |
範例 #1 產生組織中所有組織單位的清單
<?php
// $ds 是目錄伺服器的有效 LDAP\Connection 實例
$basedn = "o=My Company, c=US";
$justthese = array("ou");
$sr = ldap_list($ds, $basedn, "ou=*", $justthese);
$info = ldap_get_entries($ds, $sr);
for ($i=0; $i < $info["count"]; $i++) {
echo $info[$i]["ou"][0];
}
?>