(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 — Mets en lot des modifications et les exécute sur une entrée LDAP
$ldap
,$dn
,$modifications_info
,$controls
= null
Modifie une entrée existante dans un dossier LDAP. Permet de spécifier de façon détaillée les modifications à effectuer.
ldap
Une ressource LDAP, retourné par la fonction ldap_connect().
dn
Le nom unique de l'entrée LDAP.
modifications_info
Un tableau qui spécifie les modifications à réaliser. Chaque entrée
de ce tableau est un tableau associatif contenant deux ou trois clés :
attrib
correspond au nom de l'attribut à modifier,
modtype
correspond au type de modification à réaliser,
et (suivant le type de modification) values
correspond
à un tableau de valeurs d'attribut correspondant à la modification.
Les valeurs possibles pour modtype
sont :
LDAP_MODIFY_BATCH_ADD
Chaque valeur spécifiée via values
est ajoutée
(comme valeur additionnelle) à l'attribut nommé par attrib
.
LDAP_MODIFY_BATCH_REMOVE
Chaque valeur spécifiée via values
est supprimée
depuis l'attribut nommée par attrib
. Toutes les
valeurs de l'attribut n'étant pas présentes dans le tableau
values
demeureront inchangées.
LDAP_MODIFY_BATCH_REMOVE_ALL
Toutes les valeurs sont supprimées depuis l'attribut nommé par
attrib
. Une entrée values
n'a pas besoin d'être fournie.
LDAP_MODIFY_BATCH_REPLACE
Toutes les valeurs courantes de l'attribut nommé par
attrib
sont remplacées avec les valeurs
spécifiées via le tableau values
.
Notez que toutes les valeurs de attrib
doivent être
des chaînes de caractères, toutes les valeurs de values
doivent être un tableau de chaînes de caractères, et toutes les valeurs
de modtype
doivent être une des constantes
LDAP_MODIFY_BATCH_*.
controls
Tableau de Contrôles LDAP à envoyer avec la requête.
Cette fonction retourne true
en cas de succès ou false
si une erreur survient.
Version | Description |
---|---|
8.1.0 |
Le paramètre ldap attend désormais une instance de
LDAP\Connection ; auparavant, une ressource ldap link était attendue.
|
8.0.0 |
controls est désormais nullable ; auparavant, sa valeur par défaut était [] .
|
7.3.0 |
Support pour controls a été ajouté.
|
Exemple #1 Ajout d'un numéro de téléphone à un contact
<?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);
?>
Exemple #2 Renomme un utilisateur
<?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);
?>
Exemple #3 Ajoute deux adresses emails à un utilisateur
<?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);
?>
Exemple #4 Modifie le mot de passe d'un utilisateur
<?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);
?>
Exemple #5 Modifie le mot de passe d'un utilisateur (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);