2013-08-05 60 views
0

我的问题是,我有一个AD设置为这样:LDAP返回在不同的组中的所有用户,AD与PHP


--root
  --depot一个
      --computers
      --users
  --depot乙
     个--computers
      --users

我目前正在开发的公司内部网,我需要得到所有在所有这些子目录的用户,让周围的人公司通过找人寻找他们。

问题是我的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,但了解所有的基本概念。 欢迎任何帮助,如果我没有正确地问,请指出。

+0

您使用的是adLDAP插件还是PHP的本机支持?我已经使用'adLDAP'超过4年了,并且非常确定它有一个简单的__true/false__标记递归的文件夹结构支持。检查这个:http://adldap.sourceforge.net/wiki/doku.php?id=documentation_folder_functions – DevlshOne

+0

你有多少物品回来?你没有达到(标准默认值)每个查询限1000条记录吗?如果您有权访问“Active Directory用户和计算机”控制台,请在那里尝试您的搜索查询,看看会发生什么。我发现你的代码没有明显的问题,你似乎做得很对。另外,如果你计划在AD中做更多的事情,你可以考虑使用一个库,如[AD-X](https://github.com/Alaneor/AD-X)。然而,这可能不能解决这个问题... –

+0

嗨,我会尝试adLDAP谢谢你,也感谢你的极限我相信这是我的问题,最后一件事将是为什么AD返回电话号码有时,但如果我改变了搜索参数,它有时不会有帮助,即使它只是一些主题? –

回答

0

限制查询是什么让我相信这不是搜索subroots时,它实际上只是无法得到那么远,由于到了极限。因为这是为了一个目录我只是让搜索参数有更多的深度,所以他们返回较少。

相关问题