PHP Conference Japan 2024

ldap_list

(PHP 4, PHP 5, PHP 7, PHP 8)

ldap_list單層搜尋

說明

ldap_list(
    LDAP\Connection|陣列 $ldap,
    陣列|字串 $base,
    陣列|字串 $filter,
    陣列 $attributes = [],
    int $attributes_only = 0,
    int $sizelimit = -1,
    int $timelimit = -1,
    int $deref = LDAP_DEREF_NEVER,
    ?array $controls = null
): LDAP\Result|array|false

使用 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

指定在搜尋期間應如何處理別名。可以是以下其中之一

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];
}
?>

參見

新增註記

使用者提供的註記

此頁面沒有使用者提供的註記。
To Top