從我的域控制器上拉滿的用戶列表我設置一個新的Web服務器和Apache 2.4,PHP7和Zend框架Zend框架 - 通過LDAP
認證工作與單個用戶就好了,所以我知道我有正確安裝Zend框架並正在工作。
我的問題是,我現在想要顯示DC和他們的組上的所有用戶的完整列表。我如何爲所有用戶生成一個數組(或顯示)?
從我的域控制器上拉滿的用戶列表我設置一個新的Web服務器和Apache 2.4,PHP7和Zend框架Zend框架 - 通過LDAP
認證工作與單個用戶就好了,所以我知道我有正確安裝Zend框架並正在工作。
我的問題是,我現在想要顯示DC和他們的組上的所有用戶的完整列表。我如何爲所有用戶生成一個數組(或顯示)?
結合之後,你可以做的是這樣的:
$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);
當您使用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
就像一個魅力安裝zend-ldap。謝謝。 Allthough我不得不更換 '(UID = *)' 與 '(&(objectCategory =人)(SAM帳戶= *))' ,以便爲它工作 – Windkin
以及我的過濾器只是胡亂猜測:)很高興你解決了它!隨意標記爲正確答案;) – heiglandreas