Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/227.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用PHP LDAP获取组成员的AD属性_Php_Active Directory_Ldap - Fatal编程技术网

使用PHP LDAP获取组成员的AD属性

使用PHP LDAP获取组成员的AD属性,php,active-directory,ldap,Php,Active Directory,Ldap,我正在使用PHP查询Active Directory。我需要获取指定组中所有成员的一些属性(办公室电话和电子邮件) 我可以获得组中用户的完整CNs,例如: $results = ldap_search($ds,$ldapbase, "cn=" . $group); $entries = ldap_get_entries($ds, $results); $members = $entries[0]['member']; fo

我正在使用PHP查询Active Directory。我需要获取指定组中所有成员的一些属性(办公室电话和电子邮件)

我可以获得组中用户的完整CNs,例如:

        $results = ldap_search($ds,$ldapbase, "cn=" . $group);
        $entries = ldap_get_entries($ds, $results);
        $members = $entries[0]['member'];

            for ($i=0; $i< count($members) -1; $i++) {

                $mem = $members[$i];

                if($mem != "") {

                    $groupMembers[] = $mem;
                }
            }
我的问题是,如何获取这些结果并查询我需要的属性,即每个结果的officephone和电子邮件地址?还是我完全错了

我看到过一些类似的事情,还有一些(有些是拜占庭式的)我无法工作的例子。我玩过各种各样的过滤器语法,但都没有用。必须有一种方法从成功的组查询中获取单个结果,检索结果描述的AD对象,并提取所需的属性,但我还没有找到它

非常感谢您的帮助


顺便说一句-在Windows 2008R2、IIS7.5上使用FastCGI的PHP 5.5.7版应能以某种方式工作:

foreach ($groupsmembers as $groupmember) {
    $result = ldap_search($ds,$groupmember, '*', 'officephone,mail');
    $entries = ldap_get_entries($ds, $results);
    $users[$groupmember]['officephone'] = $entries[0]['officephone'][0];
    $users[$groupmember]['mail'] = $entries[0]['mail'][0];
}
最重要的是,您使用检索到的DN(即带有
CN=Testlastname1\,Testfirstname1,OU=personal,OU=All Staff,DC=domai…
)作为搜索基础,然后从中检索电子邮件和officephone属性

在(Linux)-命令行上,如下所示:

ldapsearch -h ldap-server -b "CN=Testlastname1, Testfirstname1,OU=Personnel,OU=All Staff,DC=domain,DC=domainsuffix" * mail,officephone

希望这能有所帮助

我会在几个小时后试一试并让你知道。好建议。最后,我使用ldap_explode_dn解析单个结果,获取第一个值[0]并搜索它--$filter=“(&(CN=$parsedresult[0])”。这是有效的,或多或少是您建议的。更有效的方法是搜索属于组成员的用户,而不是搜索组,获取组的
member
属性,然后对所有成员进行单独搜索。下面的搜索过滤器应该可以做到这一点:
(&(objectCategory=Person)(这里的memberOf=GROUP\u DN_))
是的,你是对的@RobertRossmann。但这仅在用户条目中设置了memberOf属性时有效。存在通过组条目中的uniqueMember属性设置组成员的LDAP方案。那么你就别无选择,只能通过这些条目进行评分。因此,这取决于个人设置。@heiglandreas-如何在AD中判断是否设置了uniqueMember属性?
ldapsearch -h ldap-server -b "CN=Testlastname1, Testfirstname1,OU=Personnel,OU=All Staff,DC=domain,DC=domainsuffix" * mail,officephone