簡體   English   中英

使用zend_ldap限制ldap請求的結果

[英]Limit results on a ldap requestion with zend_ldap

我實際上正在使用Zend Framework,我想從ldap目錄中獲取信息。 為此,我使用以下代碼:

$options = array('host' => '...', 'port' => '...', ...);

$ldap = new Zend_Ldap($options);

$query = '(username=' . $_GET['search'] . ')';

$attributes = array('id', 'username', ...);

$searchResults = $ldap->search($query, $ldap->getBaseDn(), Zend_Ldap::SEARCH_SCOPE_SUB, $attributes);

$ldap->disconnect();

可能會有很多結果,所以我想通過限制結果數量來實現分頁。 我在Zend_Ldap的search()函數的參數中進行了搜索,這些參數具有sort參數,但是沒有給出間隔的信息。

您是否有一種解決方案來限制結果數(例如在sql中,限制為0,200)?

謝謝

客戶端請求的大小限制可用於限制目錄服務器將返回的條目數。 但是,客戶端請求的大小限制不能覆蓋任何服務器施加的大小限制。 期限同樣如此。 所有搜索都應包括非零大小限制和時間限制。 不包括大小限制和時間限制是非常糟糕的形式。 有關更多信息,請參見“ LDAP:編程實踐”“ LDAP:搜索實踐”

“分頁”是使用簡單的分頁結果控件擴展名完成的。 在我的博客條目“ LDAP:簡單分頁結果”中進行了介紹

另外,如果您的API支持,則可以使用搜索結果監聽器來處理結果到達時的結果,這將減少應用程序的內存需求。

不幸的是,當前版本的PHP不支持開箱即用的ldap分頁功能-請參閱http://sgehrig.wordpress.com/2009/11/06/reading-paged-ldap-results-with-php-is-表演停止者/

如果您可以控制服務器環境,則可以使用PHP 5.3.2(可能還有其他)安裝一個補丁程序,以執行以下操作: https : //bugs.php.net/bug.php?id=42060

....或者您可以等到5.4.0正式發布以供生產,這應該在接下來的幾周內,並且應該包含此功能。

ldap_control_paged_results()和ldap_control_paged_results_response()是與補丁一起使用時要使用的功能。 我認為它們已在5.4中重命名為ldap_control_paged_result()和ldap_control_paged_result_response()。

祝好運!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM