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ます - そうではないかもしれませんが、好きなときに属性を任意のオブジェクトに単純に追加することはできません。

まず、属性に属する 1 つまたは複数のエントリを作成し、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 に答える