Les contrôles sont des objets spéciaux qui peuvent être envoyés avec une requête LDAP pour modifier le comportement du serveur LDAP lors de l'exécution de la requête. Il peut également y avoir des contrôles envoyés par le serveur avec la réponse pour fournir plus d'informations, généralement pour répondre à un objet de contrôle de la requête.
Note:
Tous les contrôles ne sont pas supportés par tous les serveurs LDAP. Pour savoir quels contrôles sont supportés par un serveur, vous devez interroger le DSE racine en lisant un dn vide avec le filtre (objectClass=*).
Exemple #1 Testing support for paged result control
<?php
// $ds est un identifiant de lien valide pour un serveur de répertoire
$result = ldap_read($ds, '', '(objectClass=*)', ['supportedControl']);
if (!in_array(LDAP_CONTROL_PAGEDRESULTS, ldap_get_entries($ds, $result)[0]['supportedcontrol'])) {
die("This server does not support paged result control");
}
?>
   Depuis PHP 7.3, vous pouvez envoyer des contrôles avec votre requête dans toutes
   les fonctions de requête en utilisant le paramètre controls. Lorsqu'une version
   étendue d'une fonction existe, vous devriez l'utiliser si vous voulez
   accéder à l'objet de réponse complet et être capable de parser
   les contrôles de réponse à partir de celui-ci en utilisant ldap_parse_result().
 
   controls doit être un tableau contenant un tableau pour chaque contrôle à envoyer,
   contenant les clé suivantes :
   
false.
      
     La plupart des valeurs de contrôle sont envoyées au serveur en BER-encodé. Vous pouvez soit BER-encoder la valeur vous-même, ou vous pouvez plutôt passer un tableau avec les clés correctes pour que l'encodage soit fait pour vous. Les contrôles supportés à passer en tant que tableau sont :
     LDAP_CONTROL_PAGEDRESULTS
     Les clés attendues sont [size] et [cookie]
    
     LDAP_CONTROL_ASSERT
     La clé attendue est [assertion]
    
     LDAP_CONTROL_VALUESRETURNFILTER
     La clé attendue est filter
    
     LDAP_CONTROL_PRE_READ
     La clé attendue est attrs
    
     LDAP_CONTROL_POST_READ
     La clé attendue est attrs
    
     LDAP_CONTROL_SORTREQUEST
     Attend un tableau de tableaux avec les clés attr, [oid], [reverse].
    
     LDAP_CONTROL_VLVREQUEST
     Les clés attendues sont before, after, attrvalue|(offset, count), [context]
    
Les contrôles suivants n'ont pas besoin de valeur :
   Le contrôle LDAP_CONTROL_PROXY_AUTHZ est un cas spécial
   car sa valeur n'est pas attendue d'être BER-encodée, vous pouvez donc
   directement utiliser une chaîne pour sa valeur.
 
Lorsque les contrôles sont parsés par ldap_parse_result(), les valeurs sont transformées en tableau si supportées. Ceci est supporté pour :
     LDAP_CONTROL_PASSWORDPOLICYRESPONSE
     Les clés sont expire, grace, [error]
    
     LDAP_CONTROL_PAGEDRESULTS
     Les clés sont size, cookie
    
     LDAP_CONTROL_PRE_READ
     Les clés sont dn et les noms d'attributs LDAP
    
     LDAP_CONTROL_POST_READ
     Les clés sont dn et les noms d'attributs LDAP
    
     LDAP_CONTROL_SORTRESPONSE
     Les clés sont errcode, [attribute]
    
     LDAP_CONTROL_VLVRESPONSE
     Les clés sont target, count, errcode, context
    
