(PHP 4, PHP 5, PHP 7)
ldap_search — Buscar el árbol LDAP
$link_identifier
, string $base_dn
, string $filter
[, array $attributes
= array("*")
[, int $attrsonly
= 0
[, int $sizelimit
= -1
[, int $timelimit
= -1
[, int $deref
= LDAP_DEREF_NEVER
[, array $serverctrls
= array()
]]]]]] ) : resource
Realiza la búsqueda de un filtro específico sobre el directorio con el alcance
de LDAP_SCOPE_SUBTREE
. Esto es equivalente a buscar en
el directorio completo.
Desde la versión 4.0.5 en adelante, también es posible hacer búsquedas paralelas. Para hacer esto
se utiliza un array de identificadores de enlace, en lugar de un simple identificador,
como el primer argumento. Si no quieres el mismo DN y el mismo
filtro para todas las búsquedas, puedes utilizar también un array de DNs
base y/o un array de filtros. Esos arrays deben ser del mismo tamaño como
el de el array del identificador de enlace ya que, las primeras entradas de los arrays
son utilizadas por una búsqueda, las segundas entradas son utilizadas para otra, y
así. Cuando se hacen búsquedas en paralelo se devuelve un array de identificadores del
resultado de la búsqueda, exceptuando en caso de error, la entrada que corresponde
a la búsqueda será FALSE
. Esto es muy parecido a los valores
que normalmente se devuelven, excepto que un identificador de resultado siempre es
devuelto cuando se hace una búsqueda. Hay algunos casos raros donde el resultado
normal de la búsqueda devuelve FALSE
mientras que la búsqueda paralela devuelve un
identificador.
link_identifier
Un identificador de enlace de LDAP, devuelto por ldap_connect().
base_dn
El DN base para el directorio.
filter
El filtro de búsqueda puede ser simple o avanzado, utilizando operadores booleanos en el formato descrito en la documentación de LDAP (ver el » Directorio del SDK Netscape o el » RFC4515 para la información completa sobre filtros).
attributes
Un array de los atributos requeridos, por ejemplo, array("mail", "sn", "cn"). Nótese que el "dn" siempre es devuelto independientemente de qué tipos de atributos sean requeridos.
Utilizando este parámetro es mucho más eficiente que la acción predeterminada (la cual es devolver todos los atributos y sus valores asociados). El uso de este parámetro debería ser considerado una buena práctica.
attrsonly
Debería ser establecido a 1 si sólo se buscan tipos de atributos. Si se establece a 0 los valores de atributos y los tipos de atributos se muestran tal cual es el comportamiento predeterminado.
sizelimit
Te permite limitar la cantidad de entradas a mostrar. Al establecer esto a 0 siginifica que no hay límite.
Nota:
Este parámetro NO puede prevalecer sobre el sizelimit preestablecido en el lado del servidor. Puede aún establecerlo a uno más bajo.
Algunos equipos de servidor de directorio serán configurados para devolver no mas que un número preestablecido de entradas. Si esto ocurre, el servidor indicará que sólo ha devuelto un conjunto de resultados parciales. Esto también ocurre si utiliza este parámetro para limitar el conteo de entradas devueltas.
timelimit
Establece el número de segundos de cuánto tiempo pasa en la búsqueda. Poniendo esto a 0 siginifica que no hay límite.
Nota:
Este parámetro NO puede prevalecer sobre el timelimit preestablecido en el lado del servidor. Puede aún establecerlo a uno más bajo.
deref
Especifica cuántos alias deberían ser manejados durante la búsqueda. Este puede ser uno de los siguientes:
LDAP_DEREF_NEVER
- (predeterminado) Los alias nunca son
dereferenciados.
LDAP_DEREF_SEARCHING
- Los alias deberían ser
dereferenciados durante la búsqueda pero no cuando se está ubicando el objeto base
de la búsqueda.
LDAP_DEREF_FINDING
- Los alias deberían ser
dereferenciados cuando se está ubicando el objeto base pero no durante la búsqueda.
LDAP_DEREF_ALWAYS
- Los alias siempre deberían ser dereferenciados.
serverctrls
Array de Controles de LDAP a enviar con la petición.
Devuelve un identificador de resultado de búsqueda, o FALSE
en caso de error.
Versión | Descripción |
---|---|
7.3 |
Se añadión soporte para serverctrls
|
En el ejemplo de abajo se devuelve la unidad organizacional, apellido, el nombre proporcionado y la dirección de correo electrónico para todas las personas en "My Company" donde el apellido o el nombre proporcionado contiene la subcadena $person. Este ejemplo utiliza un filtro booleano para decirle al servidor que busque información en más de un atributo.
Ejemplo #1 Búsqueda LDAP
<?php
// $ds es un identificador de enlace válido para un servidor de directorio
// $person es todo o parte del nobre de una persona, por ejemplo "Jo"
$dn = "o=My Company, c=US";
$filter="(|(sn=$person*)(givenname=$person*))";
$justthese = array("ou", "sn", "givenname", "mail");
$sr=ldap_search($ds, $dn, $filter, $justthese);
$info = ldap_get_entries($ds, $sr);
echo $info["count"]." entradas devueltas\n";
?>