我有一个应用程序,搜索我们的ldap并在缓存中保存一些属性。这是没有问题,获得属性,如邮件displayname 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)读取到数组中?
try this
$myarray['ldap'][$i]["guid"] = mssql_guid_string($info[$i]["objectGUID"][0]);
更多信息请访问http://www.php.net/manual/en/function.mssql-guid-string.php
ObjectGUID必须像" ObjectGUID "一样小写
$objectguid = bin2hex($entries['objectguid'][0]);
echo "Object Guid: ". $objectguid;
结果:Object Guid: 362b6d25af3c9a42a23235e2c6c5e380