在php中使用ldap不能获得超过1个属性

时间:2016-06-27 08:39:24

标签: php ldap

我正在尝试使用PHP中的ldap获取多个属性。 我正在上课。 问题是当我尝试获得1个属性时 - 它正在工作,但是当尝试超过1时 - 它失败并返回null。 这是我如何调用函数:

$return  = $ldap->getAttribute('displayname,mail','cn=Jhon Doe');

并且类中的函数如下所示:

public function getAttribute($attr,$filter){
         $rObjs = preg_split("/,/",$attr);

        /* Execute the actual search on the directory */
        if($this->ldapResultset = @ldap_search($this->ldapResource, $this->GetldapDomain(), $filter, $rObjs)){
            $info = ldap_get_entries($this->ldapResource, $this->ldapResultset);
        }
        /* Validate we have a result that matters */
        if($info['count'] > 0){
            if(@$info[0][$attr]['count'] > 0){
                return $info[0][$attr];
            }else{
                return false;
            }
        }else{
            return false;
        }   
    }

但如果我这样做:

$return  = $ldap->getAttribute('displayname','cn=Jhon Doe');

它正在运作..

欢迎任何帮助。

2 个答案:

答案 0 :(得分:0)

问题在于:

if(@$info[0][$attr]['count'] > 0){

$ info有正确的信息

答案 1 :(得分:0)

此时,功能尝试检索一个不存在键“displayname,mail”的数组元素。因此该函数返回“false”。看起来该函数不能很好地处理多个参数。