ldap使用ldap_search获取objectguid(php ldap)

时间:2013-03-15 10:50:42

标签: php ldap guid

我有一个应用程序,它会搜索我们的ldap并在缓存中保存一些属性。 获取像mailnamename 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()转换guid并解压缩(“H * hex,$ 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)读入数组?

谢谢你,如果你回答的话,那就啰嗦......

2 个答案:

答案 0 :(得分:2)

试试这个

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

http://www.php.net/manual/en/function.mssql-guid-string.php

的更多信息

答案 1 :(得分:0)

ObjectGUID必须是小写,如“objectguid”

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

结果:

Object Guid: 362b6d25af3c9a42a23235e2c6c5e380