<?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 => 'ru',
  ),
  'this' => 
  array (
    0 => 'function.ldap-search.php',
    1 => 'ldap_search',
    2 => 'Выполняет поиск по LDAP-дереву',
  ),
  'up' => 
  array (
    0 => 'ref.ldap.php',
    1 => 'Функции LDAP',
  ),
  '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' => 'ru',
    '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">Выполняет поиск по LDAP-дереву</span></p>

 </div>

 <div class="refsect1 description" id="refsect1-function.ldap-search-description">
  <h3 class="title">Описание</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">
   Функция выполняет поиск для заданного фильтра в каталоге
   с областью действия <strong><code>LDAP_SCOPE_SUBTREE</code></strong>.
   Эквивалентно поиску по всему каталогу.
  </p>
  <p class="para">Возможно
также выполнять параллельный поиск, тогда первым аргументом передаётся массив
экземпляров <span class="classname"><a href="class.ldap-connection.php" class="classname">LDAP\Connection</a></span>, а не один экземпляр.
Если поиск не должен использовать один и тот же базовый DN и фильтр, в качестве аргументов
передаётся массив базовых DN и (или) массив фильтров.
Количество элементов в массивах должно совпадать с количеством экземпляров <span class="classname"><a href="class.ldap-connection.php" class="classname">LDAP\Connection</a></span>,
поскольку первые записи массивов используются для одного поиска, вторые — для другого и так далее.
При параллельном поиске возвращается массив экземпляров <span class="classname"><a href="class.ldap-result.php" class="classname">LDAP\Result</a></span>,
если только не возникла ошибка, при которой возвращается значение <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">Список параметров</h3>
  <p class="para">
   <dl>
    
     <dt><code class="parameter">ldap</code></dt>
     <dd>
      <p class="para">
       Экземпляр класса <span class="classname"><a href="class.ldap-connection.php" class="classname">LDAP\Connection</a></span>,
который возвращает функция <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">
       Базовое DN для каталога.
      </p>
     </dd>
    
    
     <dt><code class="parameter">filter</code></dt>
     <dd>
      <p class="para">
       Поисковый фильтр бывает простым или расширенным логическими операторами
       в формате, который описывает документация LDAP.
       Полную информацию о фильтрах дают <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>
       или <a href="https://datatracker.ietf.org/doc/html/rfc4515" class="link external">&raquo;&nbsp;стандарт RFC4515</a>.
      </p>
     </dd>
    
    
     <dt><code class="parameter">attributes</code></dt>
     <dd>
      <p class="para">
       Массив атрибутов, например <code class="literal">array(&quot;mail&quot;, &quot;sn&quot;, &quot;cn&quot;)</code>.
       Обратите внимание, что имя dn всегда возвращается, независимо от того,
       какие типы атрибутов требуются.
      </p>
      <p class="para">
       Этот параметр эффективнее, чем действие по умолчанию,
       которое возвращает все атрибуты и присвоенные атрибутам значения.
       Поэтому работа с этим параметром — хорошая практика.
      </p>
     </dd>
    
    
     <dt><code class="parameter">attributes_only</code></dt>
     <dd>
      <p class="para">
       Значение параметр должно равняться 1, если нужны только типы атрибута.
       Если значение равно 0, то по умолчанию выбираются и типы атрибутов, и значения.
      </p>
     </dd>
    
    
     <dt><code class="parameter">sizelimit</code></dt>
     <dd>
      <p class="para">
       Параметр ограничивает количество выбранных записей. Установка для параметра
       значения 0 означает, что ограничение отсутствует.
      </p>
      <blockquote class="note"><p><strong class="note">Замечание</strong>: 
       <p class="para">
        Этот параметр НЕ умеет переопределять предустановку значения sizelimit на стороне
        сервера. Хотя его можно установить ниже.
       </p>
       <p class="para">
        Отдельные хосты серверов каталогов конфигурируют так, чтобы
        возвратить число записей, которое не превышает значение, которое предварительно установили.
        Сервер укажет, что вернул только частичный набор
        результатов, если это произойдёт. Это также происходит, если параметр передали,
        чтобы ограничить количество выбранных записей.
       </p>
      </p></blockquote>
     </dd>
    
    
     <dt><code class="parameter">timelimit</code></dt>
     <dd>
      <p class="para">
       Устанавливает число секунд, которое ограничивает процесс поиска. Установка
       для параметра значения 0 означает, что ограничение отсутствует.
      </p>
      <blockquote class="note"><p><strong class="note">Замечание</strong>: 
       <p class="para">
        Этот параметр НЕ умеет переопределять предустановку значения timelimit на стороне
        сервера. Хотя его можно установить ниже.
       </p>
      </p></blockquote>
     </dd>
    
    
     <dt><code class="parameter">deref</code></dt>
     <dd>
      <p class="para">
       Параметр определяет, как сервер будет обрабатывать псевдонимы во время поиска.
       Допустимые значения:
       <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> — (по умолчанию) псевдонимы никогда не разыменовываются.
         </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> — псевдонимы должны быть разыменованы во время поиска,
          но не при определении местоположения базового объекта поиска.
         </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> — псевдонимы должны быть разыменованы
          при определении местоположения базового объекта, но не во время поиска.
         </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> — псевдонимы должны разыменовываться всегда.
         </span>
        </li>
       </ul>
      </p>
     </dd>
    
    
     <dt><code class="parameter">controls</code></dt>
     <dd>
      <p class="para">
       Массив <a href="ldap.controls.php" class="link">управляющих объектов протокола LDAP</a> для отправки в запросе.
      </p>
     </dd>
    
   </dl>
  </p>
 </div>


 <div class="refsect1 returnvalues" id="refsect1-function.ldap-search-returnvalues">
  <h3 class="title">Возвращаемые значения</h3>
  <p class="para">
   Возвращает экземпляр
класса <span class="classname"><a href="class.ldap-result.php" class="classname">LDAP\Result</a></span>,
массив экземпляров класса
<span class="classname"><a href="class.ldap-result.php" class="classname">LDAP\Result</a></span> или <strong><code><a href="reserved.constants.php#constant.false">false</a></code></strong>, если возникла ошибка.
  </p>
 </div>


 <div class="refsect1 changelog" id="refsect1-function.ldap-search-changelog">
  <h3 class="title">Список изменений</h3>
  <p class="para">
   <table class="doctable informaltable">
    
     <thead>
      <tr>
       <th>Версия</th>
       <th>Описание</th>
      </tr>

     </thead>

     <tbody class="tbody">
      <tr>
 <td>8.1.0</td>
 <td>
  Параметр <code class="parameter">ldap</code> теперь принимает объект <span class="classname"><a href="class.ldap-connection.php" class="classname">LDAP\Connection</a></span>;
  раньше параметр ждал ресурс (<span class="type"><a href="language.types.resource.php" class="type resource">resource</a></span>) <code class="literal">ldap link</code> .
 </td>
</tr>

      <tr>
 <td>8.1.0</td>
 <td>
  Возвращает экземпляр класса <span class="classname"><a href="class.ldap-result.php" class="classname">LDAP\Result</a></span>;
  раньше возвращался ресурс (<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> теперь допускает значение null;
  раньше значение по умолчанию равнялось <code class="literal">[]</code>.
 </td>
</tr>

      <tr>
       <td>7.3.0</td>
       <td>
        Добавлена поддержка параметра <code class="parameter">controls</code>.
       </td>
      </tr>

     </tbody>
    
   </table>

  </p>
 </div>


 <div class="refsect1 examples" id="refsect1-function.ldap-search-examples">
  <h3 class="title">Примеры</h3>
  <p class="para">
   Пример ниже получает организационную единицу, фамилию, имя и адрес
   электронной почты для всех людей в My Company, где фамилия или имя содержат
   подстроку <var class="varname">$person</var>. Этот пример использует логический фильтр,
   чтобы сказать серверу, что нужно искать информацию больше, чем в одном атрибуте.
   <div class="example" id="example-1">
    <p><strong>Пример #1 LDAP поиск</strong></p>
    <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br /><br /></span><span style="color: #FF8000">// $ds допустимый экземпляр класса LDAP\Connection<br /><br />// Переменная $person — всё или часть имени человека, например Jo<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">" записей возвращено\n"</span><span style="color: #007700">;<br /><br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
    </div>

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


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