函式名: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 連線。