我有一个应用程序搜索我们的 ldap 并将一些属性保存在缓存中。获取邮件显示名称 sn 等属性没有问题,但我没有得到 objectguid。也许它只是一个显示错误过程,对象 id 是 oktett 或二进制格式。但是我不知道我是否只能显示 objectguid 或者 ldap 是否没有给我 objectguid。
我的代码是
$filter="(&(!(pager=))(!(pager=NO_MA)))";
$justthese = array("ou", "sn", "givenname", "mail", "pager","objectGUID");
$sr=ldap_search($ad, $basedn, $filter, $justthese);
$info = ldap_get_entries($ad, $sr);
我尝试了不同的过滤器,如果没有这些过滤器,我在 $myarray[$number][objectguid][0] 中总是得到相同的值。它始终为 NULL。在我得到输出但使用 ldap_first_entry 后尝试了几次。但我想像所有其他价值一样获得价值!我已经尝试使用 bin2hex() 和 unpack("H*hex,$guid") <- 尝试了不同的方法来转换 guid,但我得到了相同的值(NULL)。顺便说一句,我像这样构建我的数组:
for ($i=0; $i<count($info); $i++)
{
$myarray['ldap'][$i]["name"] = utf8_decode($info[$i]["givenname"][0]);
$myarray['ldap'][$i]["sname"] = utf8_decode($info[$i]["sn"][0]);
$myarray['ldap'][$i]["mail"] = $info[$i]["mail"][0];
$myarray['ldap'][$i]["pnr"] = $info[$i]["pager"][0];
$myarray['ldap'][$i]["guid"] = $info[$i]["objectGUID"][0];
}
有人想解决我的问题吗?或者知道将完整广告(带有过滤器和 OBJECTGUID)读入数组的更好方法?
谢谢你,如果你回答...