2017-03-01 90 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