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
, string $dn
, array $modifications_info
, array|null $controls = null
) : boolМодифицирует существующую запись в каталоге LDAP. Допустимо детальное описание модификации.
Список параметров
-
ldap -
Идентификатор соединения LDAP, возвращенный ldap_connect().
-
dn -
Характерное имя объекта LDAP.
-
modifications_info -
Массив, описывающий необходимую модификацию. Каждая запись этого массива представляет собой ассоциативный массив с двумя или тремя ключами:
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 теперь допускает значение null; ранее значение по умолчанию было [].
|
| 7.3 |
Добавлена поддержка параметра controls
|
Примеры
Пример #1 Добавление контакту телефонного номера
<?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-mail адресов
<?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)
<?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);