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,但了解所有的基本概念。 欢迎任何帮助,如果我没有正确地问,请指出。
乔
您使用的是adLDAP插件还是PHP的本机支持?我已经使用'adLDAP'超过4年了,并且非常确定它有一个简单的__true/false__标记递归的文件夹结构支持。检查这个:http://adldap.sourceforge.net/wiki/doku.php?id=documentation_folder_functions – DevlshOne
你有多少物品回来?你没有达到(标准默认值)每个查询限1000条记录吗?如果您有权访问“Active Directory用户和计算机”控制台,请在那里尝试您的搜索查询,看看会发生什么。我发现你的代码没有明显的问题,你似乎做得很对。另外,如果你计划在AD中做更多的事情,你可以考虑使用一个库,如[AD-X](https://github.com/Alaneor/AD-X)。然而,这可能不能解决这个问题... –
嗨,我会尝试adLDAP谢谢你,也感谢你的极限我相信这是我的问题,最后一件事将是为什么AD返回电话号码有时,但如果我改变了搜索参数,它有时不会有帮助,即使它只是一些主题? –