0

LDAP を検索し、いくつかの属性をキャッシュに保存するアプリケーションがあります。mail 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 を使用) を配列に読み込むより良い方法を知っていますか?

答えてくれてありがとう。

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 に答える