<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/ref.ldap.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'es',
  ),
  'this' => 
  array (
    0 => 'function.ldap-search.php',
    1 => 'ldap_search',
    2 => 'B&uacute;squeda en el servidor LDAP',
  ),
  'up' => 
  array (
    0 => 'ref.ldap.php',
    1 => 'LDAP Funciones',
  ),
  'prev' => 
  array (
    0 => 'function.ldap-sasl-bind.php',
    1 => 'ldap_sasl_bind',
  ),
  'next' => 
  array (
    0 => 'function.ldap-set-option.php',
    1 => 'ldap_set_option',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'es',
    'path' => 'reference/ldap/functions/ldap-search.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="function.ldap-search" class="refentry">
 <div class="refnamediv">
  <h1 class="refname">ldap_search</h1>
  <p class="verinfo">(PHP 4, PHP 5, PHP 7, PHP 8)</p><p class="refpurpose"><span class="refname">ldap_search</span> &mdash; <span class="dc-title">Búsqueda en el servidor LDAP</span></p>

 </div>

 <div class="refsect1 description" id="refsect1-function.ldap-search-description">
  <h3 class="title">Descripción</h3>
  <div class="methodsynopsis dc-description">
   <span class="methodname"><strong>ldap_search</strong></span>(<br>&nbsp;&nbsp;&nbsp;&nbsp;<span class="methodparam"><span class="type"><span class="type"><a href="class.ldap-connection.php" class="type LDAP\Connection">LDAP\Connection</a></span>|<span class="type"><a href="language.types.array.php" class="type array">array</a></span></span> <code class="parameter">$ldap</code></span>,<br>&nbsp;&nbsp;&nbsp;&nbsp;<span class="methodparam"><span class="type"><span class="type"><a href="language.types.array.php" class="type array">array</a></span>|<span class="type"><a href="language.types.string.php" class="type string">string</a></span></span> <code class="parameter">$base</code></span>,<br>&nbsp;&nbsp;&nbsp;&nbsp;<span class="methodparam"><span class="type"><span class="type"><a href="language.types.array.php" class="type array">array</a></span>|<span class="type"><a href="language.types.string.php" class="type string">string</a></span></span> <code class="parameter">$filter</code></span>,<br>&nbsp;&nbsp;&nbsp;&nbsp;<span class="methodparam"><span class="type"><a href="language.types.array.php" class="type array">array</a></span> <code class="parameter">$attributes</code><span class="initializer"> = []</span></span>,<br>&nbsp;&nbsp;&nbsp;&nbsp;<span class="methodparam"><span class="type"><a href="language.types.integer.php" class="type int">int</a></span> <code class="parameter">$attributes_only</code><span class="initializer"> = 0</span></span>,<br>&nbsp;&nbsp;&nbsp;&nbsp;<span class="methodparam"><span class="type"><a href="language.types.integer.php" class="type int">int</a></span> <code class="parameter">$sizelimit</code><span class="initializer"> = -1</span></span>,<br>&nbsp;&nbsp;&nbsp;&nbsp;<span class="methodparam"><span class="type"><a href="language.types.integer.php" class="type int">int</a></span> <code class="parameter">$timelimit</code><span class="initializer"> = -1</span></span>,<br>&nbsp;&nbsp;&nbsp;&nbsp;<span class="methodparam"><span class="type"><a href="language.types.integer.php" class="type int">int</a></span> <code class="parameter">$deref</code><span class="initializer"> = <strong><code><a href="ldap.constants.php#constant.ldap-deref-never">LDAP_DEREF_NEVER</a></code></strong></span></span>,<br>&nbsp;&nbsp;&nbsp;&nbsp;<span class="methodparam"><span class="type"><span class="type"><a href="language.types.null.php" class="type null">?</a></span><span class="type"><a href="language.types.array.php" class="type array">array</a></span></span> <code class="parameter">$controls</code><span class="initializer"> = <strong><code><a href="reserved.constants.php#constant.null">null</a></code></strong></span></span><br>): <span class="type"><span class="type"><a href="class.ldap-result.php" class="type LDAP\Result">LDAP\Result</a></span>|<span class="type"><a href="language.types.array.php" class="type array">array</a></span>|<span class="type"><a href="language.types.singleton.php" class="type false">false</a></span></span></div>

  <p class="para rdfs-comment">
   Realiza una búsqueda con el filtro <code class="parameter">filter</code> en el
   directorio <code class="parameter">base_dn</code> con la configuración
   <strong><code>LDAP_SCOPE_SUBTREE</code></strong>. Es equivalente
   a una búsqueda en el directorio.
  </p>
  <p class="para">También es posible realizar búsquedas en paralelo. En este caso, el primer argumento debe ser un array de
instancias de <span class="classname"><a href="class.ldap-connection.php" class="classname">LDAP\Connection</a></span>, en lugar de una sola.
Si las búsquedas no deben utilizar todas el mismo DN base y filtro, se puede pasar un array de DN base y/o un array de filtros como argumentos.
Estos arrays deben tener el mismo tamaño que el array de instancias de <span class="classname"><a href="class.ldap-connection.php" class="classname">LDAP\Connection</a></span>,
ya que las primeras entradas de los arrays se utilizan para una búsqueda, las segundas entradas para otra, y así sucesivamente.
Al realizar búsquedas en paralelo, se devuelve un array de instancias de <span class="classname"><a href="class.ldap-result.php" class="classname">LDAP\Result</a></span>, excepto en caso de error, donde el valor de retorno será <strong><code><a href="reserved.constants.php#constant.false">false</a></code></strong>.</p>
 </div>


 <div class="refsect1 parameters" id="refsect1-function.ldap-search-parameters">
  <h3 class="title">Parámetros</h3>
  <p class="para">
   <dl>
    
     <dt><code class="parameter">ldap</code></dt>
     <dd>
      <p class="para">
       Una instancia de <span class="classname"><a href="class.ldap-connection.php" class="classname">LDAP\Connection</a></span>, devuelta por <span class="function"><a href="function.ldap-connect.php" class="function">ldap_connect()</a></span>.
      </p>
     </dd>
    
    
     <dt><code class="parameter">base</code></dt>
     <dd>
      <p class="para">
       La base DN para el directorio.
      </p>
     </dd>
    
    
     <dt><code class="parameter">filter</code></dt>
     <dd>
      <p class="para">
       El filtro de búsqueda puede ser simple o avanzado, y utilizar estos
       operadores booleanos en el formato descrito en la documentación LDAP
       (consultar <a href="https://wiki.mozilla.org/Mozilla_LDAP_SDK_Programmer%27s_Guide/Searching_the_Directory_With_LDAP_C_SDK" class="link external">&raquo;&nbsp;Netscape Directory SDK</a>
       o <a href="https://datatracker.ietf.org/doc/html/rfc4515" class="link external">&raquo;&nbsp;RFC4515</a> para más información sobre los filtros).
      </p>
     </dd>
    
    
     <dt><code class="parameter">attributes</code></dt>
     <dd>
      <p class="para">
       Un array de atributos requeridos, por ejemplo <code class="literal">array(&quot;mail&quot;, &quot;sn&quot;, &quot;cn&quot;)</code>.
       Tenga en cuenta que el &quot;dn&quot; siempre se devuelve, independientemente del tipo de atributo
       solicitado.
      </p>
      <p class="para">
       El uso de este argumento es más eficiente que la acción por defecto
       (que es devolver todos los atributos junto con sus valores asociados).
       El uso de este argumento debe considerarse por tanto una buena práctica.
      </p>
     </dd>
    
    
     <dt><code class="parameter">attributes_only</code></dt>
     <dd>
      <p class="para">
       Debe establecerse en <code class="literal">1</code> si solo se solicitan los tipos de atributos.
       Si se establece en <code class="literal">0</code>, se recuperan los tipos y los valores de los atributos,
       lo que corresponde al comportamiento por defecto.
      </p>
     </dd>
    
    
     <dt><code class="parameter">sizelimit</code></dt>
     <dd>
      <p class="para">
       Permite limitar el número de entradas a recuperar. Establecer este
       argumento a <code class="literal">0</code> significa que no habrá límite.
      </p>
      <blockquote class="note"><p><strong class="note">Nota</strong>: 
       <p class="para">
        Este argumento no puede sobrescribir la configuración del lado del servidor. Sin embargo,
        puede establecerse un valor inferior.
       </p>
       <p class="para">
        Algunos directorios del servidor pueden estar configurados para devolver
        solo un número determinado de entradas. Si ocurre este comportamiento, el servidor
        indica que solo se ha devuelto un conjunto de resultados parcial. Este comportamiento
        también ocurre si se utiliza este argumento para limitar el número de entradas recuperadas.
       </p>
      </p></blockquote>
     </dd>
    
    
     <dt><code class="parameter">timelimit</code></dt>
     <dd>
      <p class="para">
       Define el número máximo de segundos permitidos para la búsqueda.
       Establecer este argumento a <code class="literal">0</code> significa que no hay límite.
      </p>
      <blockquote class="note"><p><strong class="note">Nota</strong>: 
       <p class="para">
        Este argumento no puede sobrescribir la configuración del lado del servidor pero puede utilizarse para ser más restrictivo.
       </p>
      </p></blockquote>
     </dd>
    
    
     <dt><code class="parameter">deref</code></dt>
     <dd>
      <p class="para">
       Especifica el número de alias que deben gestionarse durante la búsqueda.
       Puede ser uno de los siguientes:
       <ul class="itemizedlist">
        <li class="listitem">
         <span class="simpara">
          <strong><code><a href="ldap.constants.php#constant.ldap-deref-never">LDAP_DEREF_NEVER</a></code></strong> - (por defecto) los alias nunca se desreferencian.
         </span>
        </li>
        <li class="listitem">
         <span class="simpara">
          <strong><code><a href="ldap.constants.php#constant.ldap-deref-searching">LDAP_DEREF_SEARCHING</a></code></strong> - los alias deben desreferenciarse
          durante la búsqueda pero no al localizar el objeto base de la búsqueda.
         </span>
        </li>
        <li class="listitem">
         <span class="simpara">
          <strong><code><a href="ldap.constants.php#constant.ldap-deref-finding">LDAP_DEREF_FINDING</a></code></strong> - los alias deben desreferenciarse
          al localizar el objeto base pero no durante la búsqueda.
         </span>
        </li>
        <li class="listitem">
         <span class="simpara">
          <strong><code><a href="ldap.constants.php#constant.ldap-deref-always">LDAP_DEREF_ALWAYS</a></code></strong> - los alias siempre deben
          desreferenciarse.
         </span>
        </li>
       </ul>
      </p>
     </dd>
    
    
     <dt><code class="parameter">controls</code></dt>
     <dd>
      <p class="para">
       Array de <a href="ldap.controls.php" class="link">Controles LDAP</a> a enviar con la petición.
      </p>
     </dd>
    
   </dl>
  </p>
 </div>


 <div class="refsect1 returnvalues" id="refsect1-function.ldap-search-returnvalues">
  <h3 class="title">Valores devueltos</h3>
  <p class="para">
   Devuelve una instancia de <span class="classname"><a href="class.ldap-result.php" class="classname">LDAP\Result</a></span>, un array de instancias de <span class="classname"><a href="class.ldap-result.php" class="classname">LDAP\Result</a></span>, o <strong><code><a href="reserved.constants.php#constant.false">false</a></code></strong> si ocurre un error.
  </p>
 </div>


 <div class="refsect1 changelog" id="refsect1-function.ldap-search-changelog">
  <h3 class="title">Historial de cambios</h3>
  <p class="para">
   <table class="doctable informaltable">
    
     <thead>
      <tr>
       <th>Versión</th>
       <th>Descripción</th>
      </tr>

     </thead>

     <tbody class="tbody">
      <tr>
 <td>8.1.0</td>
 <td>
  El parámetro <code class="parameter">ldap</code> ahora espera una instancia de <span class="classname"><a href="class.ldap-connection.php" class="classname">LDAP\Connection</a></span>;
  anteriormente, se esperaba un <span class="type"><a href="language.types.resource.php" class="type resource">resource</a></span> <code class="literal">ldap link</code> válido.
 </td>
</tr>

      <tr>
 <td>8.1.0</td>
 <td>
  Ahora devuelve una instancia de <span class="classname"><a href="class.ldap-result.php" class="classname">LDAP\Result</a></span>;
  anteriormente, se devolvía un <span class="type"><a href="language.types.resource.php" class="type resource">resource</a></span>.
 </td>
</tr>

      <tr>
 <td>8.0.0</td>
 <td>
  <code class="parameter">controls</code> ahora acepta <strong><code><a href="reserved.constants.php#constant.null">null</a></code></strong>; anteriormente, su valor predeterminado era <code class="literal">[]</code>.
 </td>
</tr>

      <tr>
       <td>7.3.0</td>
       <td>
        Se añadió soporte para <code class="parameter">controls</code>.
       </td>
      </tr>

     </tbody>
    
   </table>

  </p>
 </div>


 <div class="refsect1 examples" id="refsect1-function.ldap-search-examples">
  <h3 class="title">Ejemplos</h3>
  <p class="para">
   El ejemplo siguiente lee el nombre del servicio, el nombre, el apellido y
   el email de los empleados de la empresa &quot;Mi Compañía&quot;, cuyo nombre o apellido
   contiene la subcadena: <var class="varname">$person</var>.
   Este ejemplo ilustra el uso de filtros para indicar al
   servidor que realice una búsqueda en dos atributos.
   <div class="example" id="example-1">
    <p><strong>Ejemplo #1 Búsqueda LDAP</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 es una instancia válida de conexión LDAP\Connection para un servidor de directorio.<br /><br />// $person es un nombre o parte de un nombre (por ejemplo, "Jean")<br /><br /></span><span style="color: #0000BB">$dn </span><span style="color: #007700">= </span><span style="color: #DD0000">"o=My Company, c=US"</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">$filter</span><span style="color: #007700">=</span><span style="color: #DD0000">"(|(sn=</span><span style="color: #0000BB">$person</span><span style="color: #DD0000">*)(givenname=</span><span style="color: #0000BB">$person</span><span style="color: #DD0000">*))"</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">$justthese </span><span style="color: #007700">= array(</span><span style="color: #DD0000">"ou"</span><span style="color: #007700">, </span><span style="color: #DD0000">"sn"</span><span style="color: #007700">, </span><span style="color: #DD0000">"givenname"</span><span style="color: #007700">, </span><span style="color: #DD0000">"mail"</span><span style="color: #007700">);<br /><br /></span><span style="color: #0000BB">$sr</span><span style="color: #007700">=</span><span style="color: #0000BB">ldap_search</span><span style="color: #007700">(</span><span style="color: #0000BB">$ds</span><span style="color: #007700">, </span><span style="color: #0000BB">$dn</span><span style="color: #007700">, </span><span style="color: #0000BB">$filter</span><span style="color: #007700">, </span><span style="color: #0000BB">$justthese</span><span style="color: #007700">);<br /><br /></span><span style="color: #0000BB">$info </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">$sr</span><span style="color: #007700">);<br /><br />echo </span><span style="color: #0000BB">$info</span><span style="color: #007700">[</span><span style="color: #DD0000">"count"</span><span style="color: #007700">].</span><span style="color: #DD0000">" entradas devueltas\n"</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
    </div>

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


</div><?php manual_footer($setup); ?>