Signatur
Beschreibung
ldap_unbind() trennt eine bestehende LDAP-Verbindung, die zuvor mit ldap_connect() hergestellt und optional mit ldap_bind() authentifiziert wurde. Die Funktion sendet dabei eine LDAP Unbind Request-Operation an den Server und schließt die zugrunde liegende Netzwerkverbindung.
Nach dem Aufruf von ldap_unbind() ist das übergebene LDAP\Connection-Objekt nicht mehr gültig und sollte nicht weiterverwendet werden. Alle weiteren Operationen auf dieser Verbindung würden fehlschlagen. Dies macht ldap_unbind() zum korrekten Abschluss jeder LDAP-Sitzung.
Die Funktion sollte stets aufgerufen werden, wenn LDAP-Operationen abgeschlossen sind, um Serverressourcen freizugeben und die Verbindung sauber zu beenden. In modernem PHP (ab 8.1) wird statt des alten resource-Typs ein LDAP\Connection-Objekt verwendet.
Beachte, dass ldap_unbind() und ldap_bind() trotz ihrer Namen keine Gegenstücke im klassischen Sinne sind: ldap_unbind() schließt die gesamte Verbindung, nicht nur die Authentifizierungsebene.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $ldap Pflicht | LDAP\Connection | Eine gültige LDAP-Verbindung, die zuvor mit ldap_connect() erstellt wurde. Ab PHP 8.1 ist dies ein LDAP\Connection-Objekt (davor: resource). |
Rückgabewert
true zurück, wenn die Verbindung erfolgreich getrennt wurde, oder false bei einem Fehler.Beispiele
Einfache LDAP-Verbindung trennen
<?php
$ldap = ldap_connect('ldap://ldap.example.com');
if ($ldap === false) {
die('Verbindung zum LDAP-Server fehlgeschlagen.');
}
ldap_set_option($ldap, LDAP_OPT_PROTOCOL_VERSION, 3);
if (ldap_bind($ldap, 'cn=admin,dc=example,dc=com', 'geheimesPasswort')) {
echo 'Erfolgreich angemeldet.' . PHP_EOL;
// ... LDAP-Operationen durchführen ...
if (ldap_unbind($ldap)) {
echo 'Verbindung erfolgreich getrennt.' . PHP_EOL;
} else {
echo 'Fehler beim Trennen der Verbindung.' . PHP_EOL;
}
} else {
echo 'Anmeldung fehlgeschlagen.' . PHP_EOL;
}
LDAP-Verbindung mit try/finally sauber schließen
<?php
$ldap = ldap_connect('ldap://ldap.example.com');
if ($ldap === false) {
throw new RuntimeException('LDAP-Verbindung konnte nicht hergestellt werden.');
}
ldap_set_option($ldap, LDAP_OPT_PROTOCOL_VERSION, 3);
ldap_bind($ldap, 'cn=readonly,dc=example,dc=com', 'passwort');
try {
$result = ldap_search($ldap, 'dc=example,dc=com', '(uid=mustermann)');
$entries = ldap_get_entries($ldap, $result);
foreach ($entries as $entry) {
if (isset($entry['cn'][0])) {
echo 'Gefunden: ' . $entry['cn'][0] . PHP_EOL;
}
}
} finally {
// Verbindung wird in jedem Fall getrennt – auch bei Ausnahmen
ldap_unbind($ldap);
echo 'LDAP-Verbindung wurde geschlossen.' . PHP_EOL;
}
// Wichtig · Fallstricke
Ressourcenmanagement: Nach dem Aufruf von ldap_unbind() darf das LDAP\Connection-Objekt nicht mehr für weitere LDAP-Operationen verwendet werden. Versuche, dies zu tun, führen zu Fehlern oder Warnungen.
Unterschied zu ldap_bind(): Obwohl der Name es suggerieren könnte, ist ldap_unbind() kein reines Gegenstück zu ldap_bind(). Während ldap_bind() nur die Authentifizierungsebene betrifft, schließt ldap_unbind() die gesamte Verbindung. Ein erneutes Binden auf derselben Verbindung ist nach ldap_unbind() nicht möglich.
PHP 8.1+: Ab PHP 8.1 wurde der interne resource-Typ durch das dedizierte Klassen-Objekt LDAP\Connection ersetzt. Code, der den alten resource-Typ erwartet, muss entsprechend angepasst werden.