Php 列出组中的LDAP组

Php 列出组中的LDAP组,php,active-directory,ldap,Php,Active Directory,Ldap,我正在尝试列出属于某个组的所有组。每次尝试提取属性的成员时,我都会得到一个成员列表 本质上,我只想查询一个广告组,并返回它所属的组。有什么想法吗 下面是我目前正在尝试的代码 function getGroups($group){ $ldap_host="My AD host"; $ldap_dn="My AD DN"; $user="my AD username"; $password="my AD password"; $keep=array("samaccountname

我正在尝试列出属于某个组的所有组。每次尝试提取属性的成员时,我都会得到一个成员列表

本质上,我只想查询一个广告组,并返回它所属的组。有什么想法吗

下面是我目前正在尝试的代码

function getGroups($group){
  $ldap_host="My AD host";
  $ldap_dn="My AD DN";
  $user="my AD username";
  $password="my AD password";
  $keep=array("samaccountname","distinguishedname","memberOf");
  $ldap=ldap_connect($ldap_host) or die("Could not connect to LDAP");
  ldap_bind($ldap,$user.'@trusourcelabs.com',$password) or die("Could not bind to LDAP"); 
  $query='(&(memberOf=CN=accessRW,OU=Domain Security Groups,OU=Groups,OU=IT,OU=Corporate,OU=myOU,DC=myDomain,DC=com))';
  $results=ldap_search($ldap,$ldap_dn,$query);
  $entries=ldap_get_entries($ldap, $results);
  array_shift($entries);
  $output=array();
  $i=0;
  foreach($entries as $u){
    foreach($keep as $x){
      if(isset($u[$x][0])) $attrval=$u[$x][0]; else $attrval=NULL;
      $output[$i][$x]=$attrval."<hr />";
    }
    $i++;
  }

  return $output;
}
函数getGroups($group){
$ldap_host=“我的广告主机”;
$ldap_dn=“我的广告dn”;
$user=“我的广告用户名”;
$password=“我的广告密码”;
$keep=数组(“samaccountname”、“DiscrimitedName”、“memberOf”);
$ldap=ldap_connect($ldap_host)或die(“无法连接到ldap”);
ldap_bind($ldap,$user.'@trusourcelabs.com',$password)或die(“无法绑定到ldap”);
$query='(&(memberOf=CN=accessRW,OU=Domain安全组,OU=Groups,OU=IT,OU=Corporate,OU=myOU,DC=myDomain,DC=com));
$results=ldap\u search($ldap,$ldap\u dn,$query);
$entries=ldap\u get\u条目($ldap,$results);
数组移位($entries);
$output=array();
$i=0;
foreach($u){
foreach($x){
if(isset($u[$x][0]))$attrval=$u[$x][0];else$attrval=NULL;
$output[$i][$x]=$attrval.“
”; } $i++; } 返回$output; }
刚刚想好了。。。我需要更改这一行:

$query='(&(memberOf=CN=accessRW,OU=Domain Security Groups,OU=Groups,OU=IT,OU=Corporate,OU=myOU,DC=myDomain,DC=com))';
为此:

$query='(&(member=CN=accessRW,OU=Domain Security Groups,OU=Groups,OU=IT,OU=Corporate,OU=myOU,DC=myDomain,DC=com))';

看起来我是在倒退…

刚刚想明白了。。。我需要更改这一行:

$query='(&(memberOf=CN=accessRW,OU=Domain Security Groups,OU=Groups,OU=IT,OU=Corporate,OU=myOU,DC=myDomain,DC=com))';
为此:

$query='(&(member=CN=accessRW,OU=Domain Security Groups,OU=Groups,OU=IT,OU=Corporate,OU=myOU,DC=myDomain,DC=com))';

看起来我是在倒退…

唯一需要记住的是,这只会给你一层会员资格。如果你想支持嵌套成员资格,你应该看看链内匹配规则查询操作符。唯一要记住的是,这只会给你一层成员资格。如果要支持嵌套成员资格,应查看链内匹配规则查询运算符。