ldap_read

(PHP 4, PHP 5, PHP 7, PHP 8)

ldap_readLee una entrada

Descripción

ldap_read(
    LDAP\Connection|array $ldap,
    array|string $base,
    array|string $filter,
    array $attributes = [],
    int $attributes_only = 0,
    int $sizelimit = -1,
    int $timelimit = -1,
    int $deref = LDAP_DEREF_NEVER,
    ?array $controls = null
): LDAP\Result|array|false

Realiza una búsqueda con el filtro filter en el directorio base con la configuración LDAP_SCOPE_BASE. Esto es equivalente a leer una entrada en un directorio.

También es posible realizar búsquedas en paralelo. En este caso, el primer argumento debe ser un array de instancias de LDAP\Connection, 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 LDAP\Connection, 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 LDAP\Result, excepto en caso de error, donde el valor de retorno será false.

Parámetros

ldap

Una instancia de LDAP\Connection, devuelta por ldap_connect().

base

La base DN del directorio.

filter

Un filtro no puede estar vacío. Si se desea leer toda la información de una entrada, utilice el filtro "objectClass=*". Si se conocen los tipos utilizados en el servidor de directorios, también puede emplearse un filtro adecuado, como "objectClass=inetOrgPerson".

attributes

Un array de atributos requeridos, por ejemplo array("mail", "sn", "cn"). Tenga en cuenta que el "dn" siempre se devuelve, independientemente del tipo de atributo solicitado.

El uso de este argumento es más eficiente que el comportamiento por omisión (que consiste en devolver todos los atributos junto con sus valores asociados). Por esta razón, el uso de este argumento debe considerarse una buena práctica.

attributes_only

Debe establecerse en 1 si solo se solicitan los tipos de atributos. Si se establece en 0, se recuperan tanto los tipos como los valores de los atributos, lo que corresponde al comportamiento por omisión.

sizelimit

Permite limitar el número de entradas a recuperar. Establecer este argumento en 0 significa que no habrá límite.

Nota:

Este argumento no puede sobrescribir la configuración del lado del servidor. No obstante, puede establecerse un valor inferior.

Algunos servidores de directorios 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 parcial de resultados. Este comportamiento también se produce si se utiliza este argumento para limitar el número de entradas recuperadas.

timelimit

Define el número máximo de segundos permitidos para la búsqueda. Establecer este argumento en 0 significa que no hay límite.

Nota:

Este argumento no puede sobrescribir la configuración del lado del servidor pero puede utilizarse para ser más restrictivo.

deref

Especifica el número de alias que deben gestionarse durante la búsqueda. Puede ser uno de los siguientes:

  • LDAP_DEREF_NEVER - (por omisión) los alias no se desreferencian nunca.
  • LDAP_DEREF_SEARCHING - los alias deben desreferenciarse durante la búsqueda pero no al localizar el objeto base de la búsqueda.
  • LDAP_DEREF_FINDING - los alias deben desreferenciarse al localizar el objeto base pero no durante la búsqueda.
  • LDAP_DEREF_ALWAYS - los alias deben desreferenciarse siempre.

controls

Array de Controles LDAP a enviar con la petición.

Valores devueltos

Devuelve una instancia de LDAP\Result, un array de instancias de LDAP\Result, o false si ocurre un error.

Historial de cambios

Versión Descripción
8.1.0 El parámetro ldap ahora espera una instancia de LDAP\Connection; anteriormente, se esperaba un resource ldap link válido.
8.1.0 Ahora devuelve una instancia de LDAP\Result; anteriormente, se devolvía un resource.
8.0.0 controls ahora acepta null; anteriormente, su valor predeterminado era [].
7.3.0 Se añadió soporte para controls.

add a note

User Contributed Notes 5 notes

up
12
cnicholl at yahoo dot com
20 years ago
Clarification of the ldap_read command syntax:  

If you just want to pull certain attributes from an object and you already know it's dn, the ldap_read command can do this as illustrated below.  It will be less overhead than ldap_search.

The string base_dn which is normally used to set the top context for a recursive ldap_search is used slightly differently with this command.  It is used to specify the actual object with the full dn.  (Hopefully this saves someone else a couple hours trying this command out.)

<?php
$ds = ldap.myserver.com // your ldap server
  $dn = "cn=username,o=My Company, c=US"; //the object itself instead of the top search level as in ldap_search
  $filter="(objectclass=*)"; // this command requires some filter
  $justthese = array("ou", "sn", "givenname", "mail"); //the attributes to pull, which is much more efficient than pulling all attributes if you don't do this
      $sr=ldap_read($ds, $dn, $filter, $justthese);
          $entry = ldap_get_entries($ds, $sr);

echo $entry[0]["mail"][0] . "is the email address of the cn your requested";
echo $entry[0]["sn"][0] . "is the sn of the cn your requested";
ldap_close($ds);
?> 

This prints out the specified users mail and surname for example.
up
5
me at example dot com
18 years ago
In the previous example the

$ds = ldap.myserver.com // your ldap server

should be 

$ds = ldap_connect( "ldap.myserver.com" ) ; // your ldap server
up
3
ronny at nxc dot no
12 years ago
The array in the attributes parameter needs to be an indexed array with numeric keys in ascending order. Like this:

Array
(
    [0] => this
    [1] => is
    [2] => a
    [3] => test
)

If there are missing keys in the array, then no result will be returned. This will not work:

Array
(
    [0] => this
    [1] => is
    [3] => test
)
up
0
ehalls at gmail dot com
7 years ago
For those debugging a wrapper, akin to symfony's client wrapper for these functions and since there is crap documentation on a full cycle of pulling a single record vs multiple, etc.

For this one:
YOU MUST call ldap_get_entries after this function call. 

AND PLEASE if you implement a wrapper, prime it with the initial entry else it makes no sense to execute without returning something easily visible as successful.

WHEN query->execute() and you get a collection.. make sure the entry field in the collection has at least the first entry primed.. wasted so much time because it was looking empty. 

AND this entire adapter needs to be wrapped with a less retarded usage pattern via an STL lib wrapper, mysticism( bad design) begone.
123.. not 4290234~"wds

Thanks for your time
up
-1
sbarnum at mac dot com
24 years ago
This differs from ldap_search() by not recursing down to sub-entries.  if you know the dn of the item you're looking for and only want info on that entry, use ldap_read() and pass it the full dn of the item you want.

It also seems that you'd alway want something like objectclass=* for the filter, since you're only searching on one entry.
To Top