PHP Conference Japan 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,
    字串 $dn,
    陣列 $modifications_info,
    ?陣列 $controls = null
): 布林值

修改 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 現在可以為 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:新增兩個電子郵件地址到使用者

<?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
函數 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