函数名: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 连接。