0

无法弄清楚向 LDAP 条目添加附加属性的正确语法是什么。验证时我得到这个数组:

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

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

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

            [mail] => Array
                (
                    [0] => vit.kos@email.com
                )

            [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] => Vit.Kos@email.com
                )

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


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

)

需要获得一个额外的属性成员才能像

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

        [mail] => Array
            (
                [0] => vit.kos@email.com
            )
       [member] => Array
            (
                [0] => MEMBER HERE
            )
)

以前从未使用过 LDAP,所以这让我很困惑。感谢您的回答。

4

1 回答 1

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);
于 2012-04-16T09:29:29.530 回答