<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/book.ldap.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'fr',
  ),
  'this' => 
  array (
    0 => 'ldap.controls.php',
    1 => 'Contr&ocirc;le LDAP',
    2 => 'Contr&ocirc;le LDAP',
  ),
  'up' => 
  array (
    0 => 'book.ldap.php',
    1 => 'LDAP',
  ),
  'prev' => 
  array (
    0 => 'ldap.using.php',
    1 => 'Utiliser les fonctions LDAP de PHP',
  ),
  'next' => 
  array (
    0 => 'ldap.examples.php',
    1 => 'Exemples',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'fr',
    'path' => 'reference/ldap/controls.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="ldap.controls" class="chapter">
 <h1 class="title">Contrôle LDAP</h1>

 <p class="para">
   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&#039;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&#039;informations, généralement pour répondre à un objet de contrôle
   de la requête.
  <blockquote class="note"><p><strong class="note">Note</strong>: 
   <p class="para">
    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, il faut interroger le DSE
    racine en lisant un dn vide avec le filtre (objectClass=*).
   </p>
   <div class="example" id="example-1">
    <p><strong>Exemple #1 Testing support for paged result control</strong></p>
    <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br /></span><span style="color: #FF8000">// $ds est un identifiant de lien valide pour un serveur de répertoire<br /></span><span style="color: #0000BB">$result </span><span style="color: #007700">= </span><span style="color: #0000BB">ldap_read</span><span style="color: #007700">(</span><span style="color: #0000BB">$ds</span><span style="color: #007700">, </span><span style="color: #DD0000">''</span><span style="color: #007700">, </span><span style="color: #DD0000">'(objectClass=*)'</span><span style="color: #007700">, [</span><span style="color: #DD0000">'supportedControl'</span><span style="color: #007700">]);<br />if (!</span><span style="color: #0000BB">in_array</span><span style="color: #007700">(</span><span style="color: #0000BB">LDAP_CONTROL_PAGEDRESULTS</span><span style="color: #007700">, </span><span style="color: #0000BB">ldap_get_entries</span><span style="color: #007700">(</span><span style="color: #0000BB">$ds</span><span style="color: #007700">, </span><span style="color: #0000BB">$result</span><span style="color: #007700">)[</span><span style="color: #0000BB">0</span><span style="color: #007700">][</span><span style="color: #DD0000">'supportedcontrol'</span><span style="color: #007700">])) {<br />  die(</span><span style="color: #DD0000">"This server does not support paged result control"</span><span style="color: #007700">);<br />}<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
    </div>

   </div>
  </p></blockquote>
 </p>

 <p class="para">
   À partir de PHP 7.3, il est possible d&#039;envoyer des contrôles avec la requête dans toutes
   les fonctions de requête en utilisant le paramètre <code class="parameter">controls</code>. Lorsqu&#039;une version
   étendue d&#039;une fonction existe, il est recommandé de l&#039;utiliser si on veut
   accéder à l&#039;objet de réponse complet et être capable de parser
   les contrôles de réponse à partir de celui-ci en utilisant <span class="function"><a href="function.ldap-parse-result.php" class="function">ldap_parse_result()</a></span>.
 </p>

 <p class="para">
   <code class="parameter">controls</code> doit être un tableau contenant un tableau pour chaque contrôle à envoyer,
   contenant les clés suivantes :
   <dl>
    
     <dt>
      oid
      (<span class="type"><a href="language.types.string.php" class="type string">string</a></span>)
     </dt>
     <dd>
      <span class="simpara">
       L&#039;OID du contrôle. Il est recommandé d&#039;utiliser les constantes commençant par
       LDAP_CONTROL_ pour cela. Voir <a href="ldap.constants.php" class="link">constantes de LDAP</a>.
      </span>
     </dd>
    
    
     <dt>
      iscritical
      (<span class="type"><a href="language.types.boolean.php" class="type bool">bool</a></span>)
     </dt>
     <dd>
      <span class="simpara">
       Si un contrôle est marqué comme critique, la requête échouera si le
       contrôle n&#039;est pas supporté par le serveur, ou s&#039;il échoue à être
       appliqué. À noter que certains contrôles devraient toujours être marqués
       comme critiques comme noté dans le RFC les introduisant. Par défaut à <strong><code><a href="reserved.constants.php#constant.false">false</a></code></strong>.
      </span>
     </dd>
    
    
     <dt>
      value
      (<span class="type"><a href="language.types.mixed.php" class="type mixed">mixed</a></span>)
     </dt>
     <dd>
      <span class="simpara">
       Si applicable, la valeur du contrôle. Consulter ci-dessous pour plus d&#039;informations.
      </span>
     </dd>
    
   </dl>

 </p>

 <p class="para">
   La plupart des valeurs de contrôle sont envoyées au serveur en BER-encodé.
   Il est possible de soit BER-encoder la valeur soi-même, ou il est possible de plutôt
   passer un tableau avec les clés correctes pour que l&#039;encodage soit fait
   automatiquement.
   Les contrôles supportés pour le passage en tant que tableau sont :
  <ul class="itemizedlist">
   <li class="listitem">
    <p class="para">
     <strong><code><a href="ldap.constants.php#constant.ldap-control-pagedresults">LDAP_CONTROL_PAGEDRESULTS</a></code></strong>
     Les clés attendues sont [size] et [cookie]
    </p>
   </li>
   <li class="listitem">
    <p class="para">
     <strong><code><a href="ldap.constants.php#constant.ldap-control-assert">LDAP_CONTROL_ASSERT</a></code></strong>
     La clé attendue est [assertion]
    </p>
   </li>
   <li class="listitem">
    <p class="para">
     <strong><code><a href="ldap.constants.php#constant.ldap-control-valuesreturnfilter">LDAP_CONTROL_VALUESRETURNFILTER</a></code></strong>
     La clé attendue est filter
    </p>
   </li>
   <li class="listitem">
    <p class="para">
     <strong><code><a href="ldap.constants.php#constant.ldap-control-pre-read">LDAP_CONTROL_PRE_READ</a></code></strong>
     La clé attendue est attrs
    </p>
   </li>
   <li class="listitem">
    <p class="para">
     <strong><code><a href="ldap.constants.php#constant.ldap-control-post-read">LDAP_CONTROL_POST_READ</a></code></strong>
     La clé attendue est attrs
    </p>
   </li>
   <li class="listitem">
    <p class="para">
     <strong><code><a href="ldap.constants.php#constant.ldap-control-sortrequest">LDAP_CONTROL_SORTREQUEST</a></code></strong>
     Attend un tableau de tableaux avec les clés attr, [oid], [reverse].
    </p>
   </li>
   <li class="listitem">
    <p class="para">
     <strong><code><a href="ldap.constants.php#constant.ldap-control-vlvrequest">LDAP_CONTROL_VLVREQUEST</a></code></strong>
     Les clés attendues sont before, after, attrvalue|(offset, count), [context]
    </p>
   </li>
  </ul>
 </p>

 <p class="para">
   Les contrôles suivants n&#039;ont pas besoin de valeur :
  <ul class="itemizedlist">
   <li class="listitem">
    <p class="para">
     <strong><code><a href="ldap.constants.php#constant.ldap-control-passwordpolicyrequest">LDAP_CONTROL_PASSWORDPOLICYREQUEST</a></code></strong>
    </p>
   </li>
   <li class="listitem">
    <p class="para">
     <strong><code><a href="ldap.constants.php#constant.ldap-control-managedsait">LDAP_CONTROL_MANAGEDSAIT</a></code></strong>
    </p>
   </li>
   <li class="listitem">
    <p class="para">
     <strong><code><a href="ldap.constants.php#constant.ldap-control-dontusecopy">LDAP_CONTROL_DONTUSECOPY</a></code></strong>
    </p>
   </li>
  </ul>
 </p>

 <p class="para">
   Le contrôle <strong><code><a href="ldap.constants.php#constant.ldap-control-proxy-authz">LDAP_CONTROL_PROXY_AUTHZ</a></code></strong> est un cas spécial
   car sa valeur n&#039;est pas censée être BER-encodée, il est donc possible
   d&#039;utiliser directement une chaîne pour sa valeur.
 </p>

 <p class="para">
   Lorsque les contrôles sont parsés par <span class="function"><a href="function.ldap-parse-result.php" class="function">ldap_parse_result()</a></span>, les valeurs sont
   transformées en tableau si supportées.
   Ceci est supporté pour :
  <ul class="itemizedlist">
   <li class="listitem">
    <p class="para">
     <strong><code><a href="ldap.constants.php#constant.ldap-control-passwordpolicyresponse">LDAP_CONTROL_PASSWORDPOLICYRESPONSE</a></code></strong>
     Les clés sont expire, grace, [error]
    </p>
   </li>
   <li class="listitem">
    <p class="para">
     <strong><code><a href="ldap.constants.php#constant.ldap-control-pagedresults">LDAP_CONTROL_PAGEDRESULTS</a></code></strong>
     Les clés sont size, cookie
    </p>
   </li>
   <li class="listitem">
    <p class="para">
     <strong><code><a href="ldap.constants.php#constant.ldap-control-pre-read">LDAP_CONTROL_PRE_READ</a></code></strong>
     Les clés sont dn et les noms d&#039;attributs LDAP
    </p>
   </li>
   <li class="listitem">
    <p class="para">
     <strong><code><a href="ldap.constants.php#constant.ldap-control-post-read">LDAP_CONTROL_POST_READ</a></code></strong>
     Les clés sont dn et les noms d&#039;attributs LDAP
    </p>
   </li>
   <li class="listitem">
    <p class="para">
     <strong><code><a href="ldap.constants.php#constant.ldap-control-sortresponse">LDAP_CONTROL_SORTRESPONSE</a></code></strong>
     Les clés sont errcode, [attribute]
    </p>
   </li>
   <li class="listitem">
    <p class="para">
     <strong><code><a href="ldap.constants.php#constant.ldap-control-vlvresponse">LDAP_CONTROL_VLVRESPONSE</a></code></strong>
     Les clés sont target, count, errcode, context
    </p>
   </li>
  </ul>
 </p>
</div>
<?php manual_footer($setup); ?>