LDAP使用PHP返回AD中不同组中的所有用户

时间:2013-08-05 16:08:16

标签: php search web active-directory ldap

我的问题是我有一个AD设置:


--root    
--depot A.    
- 电脑    
- 用户    
--depot B    
- 电脑    
- 用户

我目前正在开发公司内部网,我需要让所有这些子目录中的所有用户都可以通过搜索来找到任何人。

问题是我的ldap_search当前没有搜索子树。因此,目前仅返回根联系人。我的代码如下:

$ldap_connection = ldap_connect($ldap_host, $ldap_port);
if (FALSE === $ldap_connection){
die("<p>Failed to connect to the LDAP server</p>");
}

ldap_set_option($ldap_connection, LDAP_OPT_PROTOCOL_VERSION, 3) or die('Unable to set       LDAP protocol version');
ldap_set_option($ldap_connection, LDAP_OPT_REFERRALS, 0); // We need this for doing an LDAP search.

if (TRUE !== ldap_bind($ldap_connection, $ldap_username, $ldap_password)){
die('<p>Failed to bind to LDAP server.</p>');
}

//------------------------------------------------------------------------------
// Get a list of all Active Directory users.
//------------------------------------------------------------------------------
$ldap_base_dn = 'DC=yearsleygroup,DC=net';
$name= jo;
$search_filter = "(|(mail=*@belfield.co.uk)(mail=*@yearsley.co.uk)(mail=*@icepak.co.uk)(mail=*@luckyred.co.uk))";
$justthese = array("cn", "physicaldeliveryofficename", "telephonenumber", "mail");
$result = ldap_search($ldap_connection, $ldap_base_dn, $search_filter,$justthese);
$entries = ldap_get_entries($ldap_connection, $result);

为什么会发生这种情况,我什么也没想到。我当前的设置是IIS上的PHP 5.3,后台有AD。

如何返回这些不同的OU用户,是单独执行ldap查询然后连接结果然后搜索的唯一方法?

P.S。新的ldap和相对较新的PHP,但了解所有基本概念。 欢迎任何帮助,如果我没有正确询问,请指出。

1 个答案:

答案 0 :(得分:0)

查询限制让我相信它不是在搜索子根时,因为它实际上由于限制而无法实现这一点。因为这是一个目录,我刚刚使搜索参数有更多的深度,所以他们返回更少。