ldap_modify_batch
(PHP 5.4 >= 5.4.26, PHP 5.5 >= 5.5.10, PHP 5.6 >= 5.6.0, PHP 7)
ldap_modify_batch — LDAP エントリの変更をまとめて実行する
説明
ldap_modify_batch
( resource $ldap
, string $dn
, array $modifications_info
[, array|null $controls
= null
] ) : bool
LDAP ディレクトリに存在する既存のエントリを変更します。 実行する変更の詳細な仕様を指定できます。
パラメータ
ldap
ldap_connect() で返された、LDAP リンクの識別子。
dn
LDAP エンティティの識別名。
modifications_info
行う変更を指定する配列。 この配列の個々のエントリは、2つまたは3つのキーからなる連想配列です:
attrib
は、変更する属性の名前に対応します。modtype
は、行う変更のタイプに対応し、 (変更のタイプによっては)values
が変更に関連した属性値の配列に対応します。modtype
で有効な値は以下のとおりです:LDAP_MODIFY_BATCH_ADD
values
で指定された値が、 (追加の値として)attrib
で指定された属性に追加されます。LDAP_MODIFY_BATCH_REMOVE
values
で指定された値が、attrib
で指定された属性から削除されます。values
に含まれていない属性の値は、そのまま残されます。LDAP_MODIFY_BATCH_REMOVE_ALL
attrib
で指定された属性名から、全ての値を削除します。values
エントリを指定してはいけません。LDAP_MODIFY_BATCH_REPLACE
attrib
の属性名の現在の全ての値が、values
で指定された値で置き換えられます。
以下の点に注意してください:
attrib
の値は文字列でなければいけません。values
の値は、文字列の配列でなければいけません。 そして、modtype
の値は、上で示した LDAP_MODIFY_BATCH_* 定数のうちのひとつでなければいけません。controls
リクエストと一緒に送信する LDAP コントロール の配列
返り値
成功した場合に true
を、失敗した場合に false
を返します。
変更履歴
バージョン | 説明 |
---|---|
8.0.0 | controls は、nullable になりました。
|
7.3 | controls のサポートが追加されました。
|
例
例1 contact に電話番号を追加する
<?php$dn = "cn=John Smith,ou=Wizards,dc=example,dc=com";$modifs = [ [ "attrib" => "telephoneNumber", "modtype" => LDAP_MODIFY_BATCH_ADD, "values" => ["+1 555 555 1717"], ],];ldap_modify_batch($connection, $dn, $modifs);?>
例2 ユーザーの名前を変更する
<?php$dn = "cn=John Smith,ou=Wizards,dc=example,dc=com";$modifs = [ [ "attrib" => "sn", "modtype" => LDAP_MODIFY_BATCH_REPLACE, "values" => ["Smith-Jones"], ], [ "attrib" => "givenName", "modtype" => LDAP_MODIFY_BATCH_REPLACE, "values" => ["Jack"], ],];ldap_modify_batch($connection, $dn, $modifs);ldap_rename($connection, $dn, "cn=Jack Smith-Jones", NULL, TRUE);?>
例3 ユーザーにEメールアドレスを2つ追加する
<?php$dn = "cn=Jack Smith-Jones,ou=Wizards,dc=example,dc=com";$modifs = [ [ "attrib" => "mail", "modtype" => LDAP_MODIFY_BATCH_ADD, "values" => [ "jack.smith@example.com", "jack.smith-jones@example.com", ], ],];ldap_modify_batch($connection, $dn, $modifs);?>
例4 ユーザーのパスワードを変更する
<?php$dn = "cn=Jack Smith-Jones,ou=Wizards,dc=example,dc=com";$modifs = [ [ "attrib" => "userPassword", "modtype" => LDAP_MODIFY_BATCH_REMOVE, "values" => ["Tr0ub4dor&3"], ], [ "attrib" => "userPassword", "modtype" => LDAP_MODIFY_BATCH_ADD, "values" => ["correct horse battery staple"], ],];ldap_modify_batch($connection, $dn, $modifs);?>
例5 ユーザーのパスワードを変更する(Active Directory)
<?phpfunction adifyPw($pw){ return iconv("UTF-8", "UTF-16LE", '"' . $pw . '"');}$dn = "cn=Jack Smith-Jones,ou=Wizards,dc=ad,dc=example,dc=com";$modifs = [ [ "attrib" => "unicodePwd", "modtype" => LDAP_MODIFY_BATCH_REMOVE, "values" => [adifyPw("Tr0ub4dor&3")], ], [ "attrib" => "unicodePwd", "modtype" => LDAP_MODIFY_BATCH_ADD, "values" => [adifyPw("correct horse battery staple")], ],];ldap_modify_batch($connection, $dn, $modifs);