PHPCon Poland 2024

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Формирует и запускает пакетное изменение записи LDAP

Описание

ldap_modify_batch(
    LDAP\Connection $ldap,
    string $dn,
    array $modifications_info,
    ?array $controls = null
): bool

Функция модифицирует существующую запись в каталоге LDAP. Функция даёт детально описать изменения.

Список параметров

ldap

Экземпляр класса LDAP\Connection, который возвращает функция 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.1.0 Параметр ldap теперь ожидает экземпляр класса LDAP\Connection; раньше параметр ждал ресурс (resource) ldap link .
8.0.0 Параметр controls теперь допускает значение null; раньше значение по умолчанию равнялось [].
7.3.0 Добавлена поддержка параметра 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);

?>

add a note

User Contributed Notes

There are no user contributed notes for this page.
To Top