2012-04-16 56 views
0

無法弄清楚向LDAP條目添加其他屬性的正確語法。驗證當我得到這個數組:使用PHP添加LDAP屬性

Array 
(
    [0] => Array 
     (
      [cn] => Array 
       (
        [0] => Vit Kos 
       ) 

      [shortname] => Array 
       (
        [0] => vit.kos 
       ) 

      [uid] => Array 
       (
        [0] => vit.kos 
       ) 

      [mail] => Array 
       (
        [0] => [email protected] 
       ) 

      [objectclass] => Array 
       (
        [0] => top 
        [1] => person 
        [2] => organizationalPerson 
        [3] => inetOrgPerson 
        [4] => dominoPerson 
       ) 

      [givenname] => Array 
       (
        [0] => Vit 
       ) 

      [userpassword] => Array 
       (
        [0] => password here 
       ) 

      [sn] => Array 
       (
        [0] => Kos 
       ) 

      [localadmin] => Array 
       (
        [0] => CN=#SysHQAdmin 
       ) 

      [mailaddress] => Array 
       (
        [0] => [email protected] 
       ) 

      [maildomain] => Array 
       (
        [0] => EMAIL 
       )   


      [dn] => CN=Vit Kos,OU=###,O=EMAIL 
     ) 

) 

需要得到額外的屬性成員要像

Array (
     [uid] => Array 
      (
       [0] => vit.kos 
      ) 

     [mail] => Array 
      (
       [0] => [email protected] 
      ) 
     [member] => Array 
      (
       [0] => MEMBER HERE 
      ) 
) 

決不LDAP工作之前,所以這對我來說相當混亂。感謝您的答案。

+1

您是否想要檢索LDAP服務器內已經屬於該用戶的其他屬性? – periklis 2012-04-16 09:18:06

+0

事實上,你是否試圖從目錄中添加這些數據(添加修改操作),或者從已經存在的目錄中檢索一些額外的數據,但無法檢索? – DaveRandom 2012-04-16 09:22:28

+0

沒有人,沒有[員] ATTRIB,但我需要插入並裝入條目它 – 2012-04-16 09:23:29

回答

2

要將數據分配到上面檢索的目錄項目,您將執行ldap_modify()的「修改」操作。這假定數據庫的模式允許在這個對象上調用一個名爲member的屬性 - 它可能不是這樣,你不能簡單地將屬性添加到任何對象,只要你喜歡它。

首先,你需要創建一個或多個條目,將屬於member屬性,並將其存儲在一個數組:

$member = array (
    0 => "This is some data", 
    1 => "This is some more data" 
); 

爲了判斷哪些對象,我們要修改的目錄,我們將需要它的DN。我們可以從以前的搜索/列表/讀取操作的結果得到這一點 - 告訴你,你已經獲取的陣列(我想這是存儲在一個名爲$array變量):

$dn = $array[0]['dn']; 

現在我們都的信息,我們需要進行修改操作(我假設你的連接/綁定LDAP資源在一個名爲$ds變量中):

$result = ldap_modify($ds, $dn, array('member'=>$member)); 

在此之後,$result將指示操作是否成功與否的布爾。如果不成功,您可以通過以下方式收到錯誤消息,解釋其原因:

$error = ldap_error($ds); 
+0

這似乎工作,但在執行ldap_modify操作時,我沒有看到任何改變(我如何檢查我的權限可能? THX的幫助 – 2012-04-16 09:51:45

+0

如果操作失敗,'ldap_modify'應該返回'FALSE'。什麼類型的LDAP服務器都多嗎?AD,OpenLDAP或別的什麼工作(並沒有其他東西)? – DaveRandom 2012-04-16 10:04:36

+0

我不知道這些信息。我怎樣才能通過PHP這些信息?使用是Joomla使用LDAP JLDAP類!在ldap_modify返回「OK」,但我看不出有什麼變化。 – 2012-04-16 10:22:58