LDAP / PHP问题更新新增用户

时间:2011-09-12 20:16:11

标签: php active-directory ldap

我一直在管理的项目遇到了更新LDAP内容的问题。我的网站使用ldap制作用户列表。新用户不再显示,但旧用户是。 我已将这个问题追溯到它的根源,但我对于哪里出错是无能为力的。 PHP的主要部分如下:

public function getMember($type){
     $memeber ="";
     if($type == "week1"){
          $group = $this->ldap->getGroupInfo(1006);
          $member = $group["users"];
     }else if ($type == "all"){
          $group = $this->ldap->getGroupInfo(1008);
          $member = $group["users"];
     } 

 var_dump($member[116]);       
 $i = 0;

 foreach($member as &$registered){
         $i++;
         $uid = $this->ldap->getUidFromUserName($registered);
         print_r($uid);
         $newInfo = array();
         print_r($registered);     
         if($uid != ""){
                  $userInfos = $this->ldap->getUserInfo($uid);
                  $newInfo["uID"] = $uid;
                  $newInfo["userName"] = $userInfos["userName"];
                  $newInfo["groups"] = $userInfos["groups"];
                  $userName = $newInfo["userName"]; 
         } else { false;
         }
} }
print_r($member);
$member = array_filter($member);
return $member;

var_dump(&members[116]);输出显示:string 'johnr' (length=5) johnr是我添加的用户,它没有显示在列表中。这意味着我上面的php正在抓住用户。通常显示的数字包含uid,所有那些$ newinfo [...] = ...  信息。这不是。

johnr的群组ID仅为1006,仅供参考。

print_r($uid);显示了uid,但只显示了列表中显示的那些人。意思是johnr的uid不在那里。

现在,如果你向下看print_r($member);输出[111] => [112] => [113] => [114] => [115] => [116] => [117] => [118] => [119] => [120] => [121] => [122] => [123] => [124] => ),其中所有这些数字都是新添加的用户数组编号(johnr's是116),应该为每个数组编号打印的内容是什么[92] => Array ( [uID] => 2003 [userName] => testr [groups] => Array ( [0] => 1006 )的行注意:这是所有其他成员出现的所有成员所显示的内容。上面只是对于那些没有出现在列表中的人来说是print_r。

我做了ldapUserSearch和johnr帐户ldif信息与工作信息相同。我也做了一个ldapGroupSearch和johnr也和工作用户一样。

另一个有趣的想法是,如果你改变php代码,如果语句到if($uid != "" || $uid == ""){,那么php会显示那些没有显示但是为空的用户。所以它与$uid有关。但是johnr有一个2099年的uid,所以不确定为什么它找不到它。

我希望这是足够的信息来获得一些帮助。如果您有任何疑问,请在下面发表评论,我会尽力回答。

------ ------编辑/

结果表明它并没有从johnr的ldap中获取uID,用户名或组,而是用于每个工作名称...... 它能够将成员转换为数组,以便johnr显示在那里,但在此之后johnr没有属性。

ldapUserSearch中的所有属性对于工作和非工作用户都是相同的。此外,这些非工作用户与工作用户属于同一组。

getUidFromUserName函数如下所示:

public function getUidFromUserName($username) {
             if(isset($this->userNames[$username]))
                      return $this->userNames[$username];
             $this->lookupUsers();
             if(isset($this->userNames[$username]))
                      return $this->userNames[$username];
             else
                      return false;
}

更多信息。所有工作和非工作 工作帐户确实以passwd和group出现在工作标准中。

如果需要这些信息,我在Linux服务器上。

LDAP中会出现这样的问题吗?

1 个答案:

答案 0 :(得分:0)

浪费了太多时间...... 只是不得不增加LDAP中的搜索大小...我想这就是当你不允许使用管理工具时会发生什么,你不能在不需要修复的情况下与PHP试图修复它。 :d