2017-03-01 106 views
0

從我的域控制器上拉滿的用戶列表我設置一個新的Web服務器和Apache 2.4,PHP7和Zend框架Zend框架 - 通過LDAP

認證工作與單個用戶就好了,所以我知道我有正確安裝Zend框架並正在工作。

我的問題是,我現在想要顯示DC和他們的組上的所有用戶的完整列表。我如何爲所有用戶生成一個數組(或顯示)?

回答

0

結合之後,你可以做的是這樣的:

$filter = "uid=*"; 
$sr = ldap_search($ds, $dn, $filter) or die ("bummer"); 

$results = ldap_get_entries($ds, $sr); 
var_dump($results); 

此外,您可以添加一個第四個參數$ justthese,以確保您只拉你將需要的數據,從而節省時間和帶寬。那麼這將是:

$filter = "uid=*"; 
$justthese = array("cn","uid","mobile","email"); 
$sr = ldap_search($ds, $dn, $filter, $justthese) or die ("bummer"); 

$results = ldap_get_entries($ds, $sr); 
var_dump($results); 
1

當您使用Zend框架,你可能想看看zend-ldap

最簡單的方法來檢索節點列表會是這樣的:

use Zend\Ldap\Ldap; 

$options = [/* ... */]; 
$ldap = new Ldap($options); 
$ldap->bind(); 
$result = $ldap->search(
    '(uid=*)', 
    $searchBase, 
    Ldap::SEARCH_SCOPE_SUB 
); 

foreach ($result as $item) { 
    echo $item["dn"] . ': ' . $item['cn'][0] . PHP_EOL; 
} 

但要小心:返回的項目數有兩個限制:一個由客戶端設置,可以覆蓋,但第二個由服務器設置,不可更改。所以通常你無法一次檢索1000個以上的物品。

我們目前正在開發一種方法來規避LDAP服務器上安裝某個擴展時的情況(但並非總是如此),但目前已設置了該限制。

有關參數Zend\Ldap\Ldap::search()更多的信息,你可能想看看the source-code

對於這個工作,你需要通過composer require zendframework/zend-ldap

+0

就像一個魅力安裝zend-ldap。謝謝。 Allthough我不得不更換 '(UID = *)' 與 '(&(objectCategory =人)(SAM帳戶= *))' ,以便爲它工作 – Windkin

+0

以及我的過濾器只是胡亂猜測:)很高興你解決了它!隨意標記爲正確答案;) – heiglandreas