0

我有一个应用程序搜索我们的 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)读入数组的更好方法?

谢谢你,如果你回答...

4

2 回答 2

2

尝试这个

$myarray['ldap'][$i]["guid"] = mssql_guid_string($info[$i]["objectGUID"][0]);

更多信息在http://www.php.net/manual/en/function.mssql-guid-string.php

于 2014-04-21T10:24:04.093 回答
0

ObjectGUID 必须为小写,如“objectguid”

$objectguid = bin2hex($entries['objectguid'][0]);
echo "Object Guid: ". $objectguid;

结果:

Object Guid: 362b6d25af3c9a42a23235e2c6c5e380
于 2017-05-23T10:37:17.503 回答