2013-03-15 56 views
0

我有一個應用程序,它搜索我們的ldap並將一些屬性保存在緩存中。 獲取郵件顯示名稱等屬性沒有問題,但我沒有得到objectguid。 也許它只是一個顯示錯誤過程中的對象ID是以oktett或二進制格式。但我不知道,如果我只能不顯示objectguid或如果ldap不給我的objectguid。ldap使用ldap_search獲取objectguid(php ldap)

我的代碼是

$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); 

我已經嘗試過不同的過濾器,無justthese我總是得到在$ myArray的[$號]相同值的objectGUID] [0]。它始終是NULL。 我得到了一個輸出,但與ldap_first_entry幾個trys。但我想獲得像所有其他值的價值! 我試着用bin2hex()和unpack(「H * hex,$ guid」)轉換guid < - 嘗試了不同的方法,但是我得到了相同的值(NULL)。 BTW我建立我的數組是這樣的:

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)到一個數組?

謝謝檸mutch如果你回答...

+0

非法聲明'(pager =)'需要什麼?也許開發者意味着否定現在的過濾器'(!(pager = *))'? – 2013-03-15 13:18:23

+0

對不起,這是我的錯,我已經編輯好了。它應該是尋呼機不空(尋呼機= *)。但這不是問題 – 2013-03-15 14:12:40

+0

omg ....現在我檢查了print_r($ info),我看到了什麼?!對象id [0] => M⣽ I %0 d 中的一個值。 現在我必須保存這個有效的格式,和bin2hex();工作中。所以這個問題解決了!謝謝大家 – 2013-03-15 14:25:32

回答

0

的objectGUID必須小寫像 「的objectGUID」

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

結果:

Object Guid: 362b6d25af3c9a42a23235e2c6c5e380