从我的域控制器上拉满的用户列表我设置一个新的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