(PHP 4, PHP 5, PHP 7, PHP 8)
ldap_get_values — Lee todos los valores de una entrada LDAP
$ldap, LDAP\ResultEntry $entry, string $attribute): array |false Lee todos los valores del atributo de una entrada en un resultado.
La llamada a esta función requiere una entry
y debe ser precedida por una búsqueda LDAP,
y una de las funciones que permiten acceder a una entrada.
La aplicación debe contener información que permita leer ciertos atributos (como "nombre" o "mail"), o bien deberá utilizarse la función ldap_get_attributes() para saber cuáles son los atributos que existen para una entrada dada.
ldapUna instancia de LDAP\Connection , devuelta por ldap_connect() .
entryUna instancia de LDAP\ResultEntry .
attribute
Devuelve un array de valores para el atributo, o false en caso de error.
El número de valores devueltos está disponible en el índice 'count' del array
devuelto. Los valores son accesibles individualmente, con los índices
numéricos del array. La indexación comienza en 0.
LDAP permite más de una entrada por atributo, lo que permite almacenar varias direcciones de correo electrónico por persona, utilizando solo una etiqueta "mail":
return_value["count"] = número de valores del atributo return_value[0] = primer valor del atributo return_value[i] = i-ésimo valor del atributo
| 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 |
El parámetro entry ahora espera una instancia de LDAP\ResultEntry
; anteriormente, se esperaba un resource ldap result entry válido.
|
Ejemplo #1 Lista todas las valores del atributo "mail" de una entrada
<?php
// $ds debe ser una instancia de conexión LDAP\Connection válida
// $sr debe ser un recurso de resultado válido, obtenido con una de las funciones de
// búsqueda LDAP.
// $entry es una entrada LDAP válida, obtenida con una de las funciones
// LDAP que devuelve una entrada
$values = ldap_get_values($ds, $entry,"mail");
echo $values["count"] . " direcciones de correo para esta entrada.<br />";
for ($i=0; $i < $values["count"]; $i++) {
echo $values[$i] . "<br />";
}
?>It wasn't immediately obvious to me that the ldap_get_values function does not work with binary data - only strings. If you fetch binary data with ldap_get_values you don't get a warning - just some trash. For binary data you have to use ldap_get_values_len.Well this took me a while to find the problem, so I'm posting in case someone else runs in to this.
$sr = ldap_search($ds, "cn=me", "(objectclass=*)");
$entry = ldap_first_entry($ds, $sr);
do {
// do other stuff
$sr = "something else now";
$values = ldap_get_values($ds, $entry, "attirib1");
// do other stuff
} while ($entry = ldap_next_entry($ds, $entry));
If you change the search resource $sr to something else even though it's not used again it will kill the page it'll be a blank page and if you view the code you'll get different things depending on something no idea what.
This kepted happening I had forgotten I had used $sr so I was using it again and it would just not show the page whenever I used ldap_get_values, if this is a feature it would be nice to know. I haven't seen it happen with other functions.