ldap_modify_batch
(PHP 5.4 >= 5.4.26, PHP 5.5 >= 5.5.10, PHP 5.6 >= 5.6.0, PHP 7, PHP 8)
ldap_modify_batch — Batch and execute modifications on an LDAP entry
Description
LDAP\Connection
$ldap,string
$dn,array
$modifications_info,?array
$controls = null): bool
Modifies an existing entry in the LDAP directory. Allows detailed specification of the modifications to perform.
Parameters
ldapAn LDAP resource, returned by ldap_connect().
dnThe distinguished name of an LDAP entity.
modifications_infoAn array that specifies the modifications to make. Each entry in this array is an associative array with two or three keys:
attribmaps to the name of the attribute to modify,modtypemaps to the type of modification to perform, and (depending on the type of modification)valuesmaps to an array of attribute values relevant to the modification.Possible values for
modtypeinclude:LDAP_MODIFY_BATCH_ADDEach value specified through
valuesis added (as an additional value) to the attribute named byattrib.LDAP_MODIFY_BATCH_REMOVEEach value specified through
valuesis removed from the attribute named byattrib. Any value of the attribute not contained in thevaluesarray will remain untouched.LDAP_MODIFY_BATCH_REMOVE_ALLAll values are removed from the attribute named by
attrib. Avaluesentry must not be provided.LDAP_MODIFY_BATCH_REPLACEAll current values of the attribute named by
attribare replaced with the values specified throughvalues.
Note that any value for
attribmust be a string, any value forvaluesmust be an array of strings, and any value formodtypemust be one of the LDAP_MODIFY_BATCH_* constants listed above.controlsArray of LDAP Controls to send with the request.
Changelog
| Version | Description |
|---|---|
| 8.1.0 | The ldap parameter expects an LDAP\Connection instance now; previously, a valid ldap link resource was expected. |
| 8.0.0 | controls is nullable now; previously, it defaulted to []. |
| 7.3.0 | Support for controls added |
Examples
Example #1 Add a telephone number to a 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);
?>Example #2 Rename a user
<?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);
?>Example #3 Add two e-mail addresses to a user
<?php
$dn = "cn=Jack Smith-Jones,ou=Wizards,dc=example,dc=com";
$modifs = [
[
"attrib" => "mail",
"modtype" => LDAP_MODIFY_BATCH_ADD,
"values" => [
"[email protected]",
"[email protected]",
],
],
];
ldap_modify_batch($connection, $dn, $modifs);
?>Example #4 Change a user's password
<?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);
?>Example #5 Change a user's password (Active Directory)
<?php
function 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);