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_connect() 返回的 LDAP 资源。

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 实例;以前,期望一个有效的 ldap link 资源
8.0.0 controls 现在是可空的;以前,它默认为 []
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 向用户添加两个电子邮件地址

<?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);
?>

示例 #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);

添加备注

用户贡献的笔记

此页面没有用户贡献的笔记。
To Top