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, возвращенный 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"NULLTRUE);
?>

Пример #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);