PHP 8.4.0 RC4 available for testing

ldap_exop

(PHP 7 >= 7.2.0, PHP 8)

ldap_exopEffectue une opération étendue

Description

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

Effectue une opération étendue sur le ldap spécifié avec request_oid l'OID de l'opération et request_data les données.

Liste de paramètres

ldap

Une instance LDAP\Connection, retourné par ldap_connect().

request_oid

L'OID de l'opération étendue. Vous pouvez utiliser LDAP_EXOP_START_TLS, LDAP_EXOP_MODIFY_PASSWD, LDAP_EXOP_REFRESH, LDAP_EXOP_WHO_AM_I, LDAP_EXOP_TURN, ou une chaîne avec l'OID de l'opération que vous souhaitez envoyer.

request_data

L'opération étendue demande des données. Peut être NULL pour certaines opérations comme LDAP_EXOP_WHO_AM_I, peut également nécessiter un encodage BER.

controls

Un tableau de contrôles LDAP à envoyer avec la demande.

response_data

Va être rempli avec les données de réponse de l'opération étendue si fournies. Si non fournies, vous pouvez utiliser ldap_parse_exop sur l'objet résultat plus tard pour obtenir ces données.

response_oid

Va être rempli avec l'OID de réponse si fourni, généralement égal à l'OID de la demande.

Valeurs de retour

Lorsqu'utiliser avec response_data, renvoie true en cas de succès ou false en cas d'erreur. Lorsqu'utiliser sans response_data, renvoie un identifiant de résultat ou false en cas d'erreur.

Historique

Version Description
8.1.0 Le paramètre ldap attend désormais une instance de LDAP\Connection ; auparavant, une ressource ldap link était attendue.
7.3.0 Le support pour controls à été ajouté

Exemples

Exemple #1 Opération étendue WHOAMI

<?php
$ds
= ldap_connect("localhost"); // assumant que le serveur LDAP est sur cet hôte
if ($ds) {
// lie avec le dn approprié pour donner l'accès de mise à jour
$bind = ldap_bind($ds, "cn=root, o=My Company, c=US", "secret");
if (!
$bind) {
echo
"Unable to bind to LDAP server";
exit;
}
// Appel de l'opération étendue WHOAMI
$r = ldap_exop($ds, LDAP_EXOP_WHO_AM_I);
// analyse l'objet résultat
ldap_parse_exop($ds, $r, $retdata);
// Output: string(31) "dn:cn=root, o=My Company, c=US"
var_dump($retdata);
// Même chose en utilisant le paramètre $response_data
$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";
}
?>

Voir aussi

add a note

User Contributed Notes 1 note

up
-1
Roland Gruber
6 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