Signatur
Beschreibung
ldap_modify ist ein Alias der Funktion ldap_mod_replace und ersetzt die Attribute eines bestehenden LDAP-Eintrags vollständig durch die angegebenen neuen Werte. Der Eintrag wird über seinen Distinguished Name (DN) identifiziert.
Die Funktion eignet sich, um bekannte Attribute eines LDAP-Objekts (z. B. eines Benutzers oder einer Gruppe) zu aktualisieren, ohne den gesamten Eintrag neu anlegen zu müssen. Dabei werden die übergebenen Attribute komplett ersetzt – vorhandene Werte werden überschrieben, nicht ergänzt.
Der Parameter $entry ist ein assoziatives Array, dessen Schlüssel die LDAP-Attributnamen sind und dessen Werte entweder ein einzelner String oder ein Array von Strings sein können. Soll ein Attribut gelöscht werden, übergibt man ein leeres Array als Wert.
Hinweis: Da ldap_modify lediglich ein Alias ist, wird empfohlen, direkt ldap_mod_replace zu verwenden, um künftige Kompatibilitätsprobleme zu vermeiden, falls der Alias entfernt wird.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $ldap Pflicht | LDAP\Connection | Eine gültige LDAP-Verbindungsressource, die zuvor mit ldap_connect und ldap_bind erstellt und authentifiziert wurde. |
|
| $dn Pflicht | string | Der Distinguished Name (DN) des LDAP-Eintrags, dessen Attribute ersetzt werden sollen, z. B. uid=jdoe,ou=users,dc=example,dc=com. |
|
| $entry Pflicht | array | Assoziatives Array mit den zu ersetzenden Attributen. Schlüssel sind Attributnamen, Werte sind Strings oder Arrays von Strings. Ein leeres Array als Wert löscht das Attribut. | |
| $controls | array|null | null | Optionale LDAP-Steuerungsstrukturen (Server Controls), die mit der Anfrage gesendet werden. Seit PHP 8.0.0 verfügbar. |
Rückgabewert
true bei Erfolg zurück, andernfalls false. Bei einem Fehler kann ldap_error oder ldap_errno zur Fehlerdiagnose genutzt werden.Beispiele
Telefonnummer eines LDAP-Benutzers aktualisieren
<?php
$ldap = ldap_connect('ldap://ldap.example.com');
ldap_set_option($ldap, LDAP_OPT_PROTOCOL_VERSION, 3);
if (!ldap_bind($ldap, 'cn=admin,dc=example,dc=com', 'geheimesPasswort')) {
die('LDAP-Bind fehlgeschlagen: ' . ldap_error($ldap));
}
$dn = 'uid=jdoe,ou=users,dc=example,dc=com';
$entry = [
'telephoneNumber' => '+49 30 123456789',
'mail' => 'jdoe@example.com',
];
if (ldap_modify($ldap, $dn, $entry)) {
echo 'Eintrag erfolgreich aktualisiert.';
} else {
echo 'Fehler beim Aktualisieren: ' . ldap_error($ldap);
}
ldap_unbind($ldap);
Attribut eines LDAP-Eintrags löschen
<?php
$ldap = ldap_connect('ldap://ldap.example.com');
ldap_set_option($ldap, LDAP_OPT_PROTOCOL_VERSION, 3);
ldap_bind($ldap, 'cn=admin,dc=example,dc=com', 'geheimesPasswort');
$dn = 'uid=jdoe,ou=users,dc=example,dc=com';
// Attribut 'description' durch Übergabe eines leeren Arrays löschen
$entry = [
'description' => [],
];
if (ldap_modify($ldap, $dn, $entry)) {
echo 'Attribut erfolgreich gelöscht.';
} else {
echo 'Fehler: ' . ldap_error($ldap);
}
ldap_unbind($ldap);
// Wichtig · Fallstricke
Alias: ldap_modify ist ein Alias von ldap_mod_replace. Es wird empfohlen, direkt ldap_mod_replace zu verwenden, da Aliase in zukünftigen PHP-Versionen ohne Vorwarnung entfernt werden können.
Berechtigungen: Der gebundene LDAP-Benutzer muss ausreichende Schreibrechte auf den zu ändernden Eintrag besitzen. Andernfalls schlägt die Operation mit einem Berechtigungsfehler fehl.
Sicherheit: Niemals Benutzereingaben ungeprüft in DN oder Attributwerte übernehmen. LDAP-Injection kann durch sorgfältige Validierung und ggf. Verwendung von ldap_escape vermieden werden.
Vollständiges Ersetzen: Im Gegensatz zu ldap_mod_add werden durch ldap_modify/ldap_mod_replace bestehende Werte vollständig überschrieben, nicht ergänzt.