我正在尝试使用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');
它正在运作..
欢迎任何帮助。
答案 0 :(得分:0)
问题在于:
if(@$info[0][$attr]['count'] > 0){
$ info有正确的信息
答案 1 :(得分:0)
此时,功能尝试检索一个不存在键“displayname,mail”的数组元素。因此该函数返回“false”。看起来该函数不能很好地处理多个参数。