2012-04-16 58 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