首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在 OpenLDAP 中分页 ldap_search 以绕过大小限制?

在 OpenLDAP 中,分页 ldap_search 以绕过大小限制,可以通过使用范围查询和简单分页实现。

首先,需要了解 OpenLDAP 中的范围查询。范围查询是指在搜索结果中限制返回的条目数量。可以使用 ldap_search 函数的 sizelimit 参数设置范围查询的大小限制。例如,以下代码将范围查询的大小限制设置为 1000:

代码语言:php
复制
$result = ldap_search($ldapconn, $base_dn, $filter, $attributes, 0, 1000);

然而,如果搜索结果的条目数量超过了范围查询的大小限制,需要使用简单分页来获取所有结果。简单分页是指将搜索结果分成多个部分,每次只返回一部分结果。可以使用 ldap_search 函数的 pagedcontrol 参数设置简单分页。例如,以下代码将使用简单分页获取所有结果:

代码语言:php
复制
$pageSize = 1000;
$cookie = '';
$results = [];

do {
    ldap_control_paged_result(
        $ldapconn,
        $pageSize,
        true,
        $cookie
    );

    $result = ldap_search($ldapconn, $base_dn, $filter, $attributes);

    if (ldap_count_entries($ldapconn, $result) > 0) {
        $entries = ldap_get_entries($ldapconn, $result);

        foreach ($entries as $entry) {
            $results[] = $entry;
        }
    }

    ldap_control_paged_result_response(
        $ldapconn,
        $result,
        $cookie
    );
} while (!empty($cookie));

在上述代码中,$pageSize 变量设置每页的大小,$cookie 变量用于存储分页的状态。在每次循环中,使用 ldap_control_paged_result 函数设置分页控制,然后使用 ldap_search 函数搜索目录。如果搜索结果中有条目,将它们添加到 $results 数组中。最后,使用 ldap_control_paged_result_response 函数获取分页状态,并将其存储在 $cookie 变量中,直到所有结果都被获取为止。

总之,在 OpenLDAP 中,可以使用范围查询和简单分页来绕过大小限制,以获取大量的搜索结果。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

没有搜到相关的结果

领券