(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 实例数组,而不是单个实例。如果搜索不应都使用相同的基 DN 和过滤器,则可以传递基 DN 数组和/或过滤器数组作为参数。这些数组的大小必须与 LDAP\Connection 实例数组相同,因为数组的第一个条目用于一次搜索,第二个条目用于另一次搜索,以此类推。执行并行搜索时,将返回 LDAP\Result 实例数组,但在发生错误的情况下,返回值将为 false
。
ldap
由 ldap_connect() 返回的 LDAP\Connection 实例。
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 现在可以为空;以前,它默认为 [] 。 |
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];
}
?>