查詢

ldap_search()函式—用法及示例

「 在指定的LDAP目錄中執行搜尋操作 」


函式名:ldap_search()

適用版本:PHP 4, PHP 5, PHP 7

用法:ldap_search(resource $ldap, string $base_dn, string $filter, array $attributes = [], int $attrsonly = 0, int $sizelimit = 0, int $timelimit = 0, int $deref = LDAP_DEREF_NEVER) : resource|false

說明:ldap_search() 函式用於在指定的LDAP目錄中執行搜尋操作。它返回一個搜尋結果資源,該資源可以用於後續的操作,如獲取搜尋結果條目。

引數:

  • $ldap:LDAP 連線識別符號,由 ldap_connect() 函式返回。
  • $base_dn:指定搜尋的基礎DN(Distinguished Name),即搜尋的起始位置。
  • $filter:指定搜尋的過濾條件。可以是一個完整的過濾器字串,也可以是一個簡單的屬性名。
  • $attributes(可選):指定要返回的屬性列表,預設為空陣列,表示返回所有屬性。
  • $attrsonly(可選):指定是否只返回屬性名,而不返回屬性值。預設為0,表示返回屬性名和屬性值。
  • $sizelimit(可選):指定搜尋結果的最大條目數,預設為0,表示沒有限制。
  • $timelimit(可選):指定搜尋的時間限制(以秒為單位),預設為0,表示沒有限制。
  • $deref(可選):指定搜尋過程中如何處理別名(alias)。可選值為LDAP_DEREF_NEVER、LDAP_DEREF_SEARCHING、LDAP_DEREF_FINDING和LDAP_DEREF_ALWAYS。

返回值:成功返回一個搜尋結果資源,失敗返回false。

示例:

// 連線到LDAP伺服器
$ldap = ldap_connect('ldap://ldap.example.com');

if ($ldap) {
    // 繫結到LDAP伺服器
    $bind = ldap_bind($ldap, 'cn=admin,dc=example,dc=com', 'password');

    if ($bind) {
        // 執行搜尋操作
        $result = ldap_search($ldap, 'dc=example,dc=com', '(&(objectClass=person)(sn=Smith))');

        if ($result) {
            // 獲取搜尋結果條目數
            $count = ldap_count_entries($ldap, $result);
            echo "搜尋到 {$count} 條結果\n";

            // 遍歷搜尋結果
            $entries = ldap_get_entries($ldap, $result);
            for ($i = 0; $i < $entries['count']; $i++) {
                echo "DN: {$entries[$i]['dn']}\n";
                echo "姓: {$entries[$i]['sn'][0]}\n";
                echo "名: {$entries[$i]['givenname'][0]}\n";
                echo "郵箱: {$entries[$i]['mail'][0]}\n";
                echo "電話: {$entries[$i]['telephonenumber'][0]}\n";
                echo "\n";
            }
        } else {
            echo "搜尋失敗\n";
        }

        // 關閉LDAP連線
        ldap_close($ldap);
    } else {
        echo "繫結失敗\n";
    }
} else {
    echo "連線失敗\n";
}

以上示例連線到 LDAP 伺服器,繫結到管理員賬戶,然後執行了一個搜尋操作,搜尋條件是找出姓為 "Smith" 的人員。搜尋結果包含了滿足條件的所有條目,並列印出了每個條目的 DN、姓、名、郵箱和電話資訊。最後關閉了 LDAP 連線。

補充糾錯
上一個函式: ldap_set_option()函式
下一個函式: ldap_sasl_bind()函式
熱門PHP函式
分享連結