PHP 8.4.22 Released!

ldap_exop

(PHP 7 >= 7.2.0, PHP 8)

ldap_exopFührt eine erweiterte LDAP-Operation aus

Beschreibung

function ldap_exop(
    LDAP\Connection $ldap,
    string $request_oid,
    string $request_data = null,
    array $controls = null,
    string &$response_data = ?,
    string &$response_oid = ?
): mixed

Führt eine erweiterte Operation auf der angegebenen ldap-Verbindung aus, wobei request_oid die OID der Operation enthält und request_data die Daten.

Warnung

Die Verwendung von mehr als 4 Parametern ist veraltet. Stattdessen sollte ldap_exop_sync() verwendet werden.

Parameter-Liste

ldap
Eine LDAP\ConnectionInstanz, die von ldap_connect() zurückgegeben wurde.
request_oid
Die OID der erweiterten Operation. Es kann eine der LDAP_EXOP_*-Konstanten oder ein String mit der OID der Operation sein.
request_data
Die Daten der Anfrage zur erweiterten Operation. Bei einigen Operationen wie LDAP_EXOP_WHO_AM_I kann dieser Parameter null sein; gegebenenfalls müssen die Daten BER-kodiert vorliegen.
controls
Ein Array von LDAP-Controls, das mit der Anfrage gesendet wird.
response_data
Wird, falls angegeben, mit den Antwortdaten der erweiterten Operation befüllt. Andernfalls kann ldap_parse_exop() später auf dem Ergebnisobjekt aufgerufen werden, um diese Daten zu erhalten.
response_oid
Wird, falls angegeben, mit der Antwort-OID befüllt, die in der Regel der Anfrage-OID entspricht.

Rückgabewerte

Wird der Parameter response_data verwendet, gibt die Funktion bei Erfolg true und im Fehlerfall false zurück. Wird er nicht verwendet, gibt sie eine Ergebniskennung oder im Fehlerfall false zurück.

Changelog

Version Beschreibung
8.4.0 Die Verwendung von mehr als 4 Parametern ist veraltet. Stattdessen sollte ldap_exop_sync() verwendet werden.
8.1.0 Der Parameter ldap erwartet nun eine LDAP\Connection-Instanz; vorher wurde eine gültige ldap link-Ressource erwartet.
7.3.0 Unterstützung für controls hinzugefügt.

Beispiele

Beispiel #1 Whoami-Erweiterungsoperation

<?php
$ds
= ldap_connect("localhost"); // Es wird angenommen, dass der LDAP-Server auf diesem Host läuft

if ($ds) {
// Mit einem geeigneten DN binden, das Schreibrechte besitzt
$bind = ldap_bind($ds, "cn=root, o=My Company, c=US", "secret");
if (!
$bind) {
echo
"Unable to bind to LDAP server";
exit;
}

// WHOAMI-EXOP aufrufen
$r = ldap_exop($ds, LDAP_EXOP_WHO_AM_I);

// Das Ergebnisobjekt auswerten
ldap_parse_exop($ds, $r, $retdata);
// Ausgabe: string(31) "dn:cn=root, o=My Company, c=US"
var_dump($retdata);

// Dasselbe mit dem $response_data-Parameter
$success = ldap_exop($ds, LDAP_EXOP_WHO_AM_I, NULL, NULL, $retdata, $retoid);
if (
$success) {
var_dump($retdata);
}

ldap_close($ds);
} else {
echo
"Unable to connect to LDAP server";
}
?>

Siehe auch

add a note

User Contributed Notes 1 note

up
-1
Roland Gruber
7 years ago
The following can be used to run the refresh command in PHP 7.2 as ldap_exop_refresh comes with 7.3.

$dn= 'cn=user,dc=test,dc=org';
$ttl = 3600;
$data = '';
$data .= '80' . sprintf("%'.02x", strlen($dn)) . bin2hex($dn);
$data .= '81' . sprintf("%'.02x", 4) . sprintf("%'.08x", $ttl);
$data = hex2bin('30' . sprintf("%'.02x", strlen($data)/2) . $data);
$success = ldap_exop($ldapHandle, LDAP_EXOP_REFRESH, $data);
To Top