ldap_get_attributes

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

ldap_get_attributesObtém atributos de uma entrada de resultado de pesquisa

Descrição

ldap_get_attributes(LDAP\Connection $ldap, LDAP\ResultEntry $entry): array

Lê atributos e valores de uma entrada no resultado da pesquisa.

Ao localizar uma entrada específica no diretório, pode-se consultar que informação está armazenana nessa entrada usando-se esta chamada. Pode-se usar esta função para uma aplicação que navega por entradas de diretório e/ou onde não se conhece a estrutura das entradas do diretório. Em muitas aplicações, é comum procurar um atributo específico como um e-mail ou um sobrenome, desconsiderando outros dados da entrada.

return_value["count"] = número da atributos na entrada
return_value[0] = primeiro atributo
return_value[n] = (n+1)-ésimo atributo

return_value["attribute"]["count"] = número de valores para o atributo
return_value["attribute"][0] = primeiro valor do atributo
return_value["attribute"][i] = (i+1)-ésimo valor do atributo

Parâmetros

ldap

Uma instância de LDAP\Connection, retornada por ldap_connect().

entry

Uma instância de LDAP\ResultEntry.

Valor Retornado

Retorna informação completa da entrada em um array multi-dimensional.

Registro de Alterações

Versão Descrição
8.1.0 O parâmetro ldap agora espera uma instância de LDAP\Connection; anteriormente, um resource ldap link válido era esperado.
8.1.0 O parâmetro entry agora espera uma instância de LDAP\ResultEntry; anteriormente, um resource ldap result entry válido era esperado.

Exemplos

Exemplo #1 Mostra a lista de atributos armazenados em uma entrada particular do diretório

<?php
// $ds é uma instância válida de LDAP\Connection para um servidor de diretório

// $sr é um resultado de pesquisa válido de uma chamada anterior a
// uma das funções de pesquisa de diretório LDAP

$entry = ldap_first_entry($ds, $sr);

$attrs = ldap_get_attributes($ds, $entry);

echo
$attrs["count"] . " atributos mantidos para esta entrada:<p>";

for (
$i=0; $i < $attrs["count"]; $i++) {
echo
$attrs[$i] . "<br />";
}
?>

Veja Também

adicione uma nota

Notas Enviadas por Usuários (em inglês) 6 notes

up
4
kop at meme dot com
22 years ago
It's good practice to use array_change_key_case() on the result of ldap_get_attributes() so your program can ignore case in attribute names just like ldap itself does.  (You wouldn't want ldap_get_attributes to _always_ flatten the case because you need a way to get the attribute names in a pretty format for display to the user.)
up
1
allie at pajunas dot com
23 years ago
The array created by this function is similar to the on from ldap_get_entries() but when it creates array keys it alters the attribute's case inconsistently.  ldap_get_entries() lowercases all of the attributes before keying the array with them, but this function appears to leave things as they are.If you're having problems, do a print_r and make sure you're using correct case for array keys.  For example, you might need to use "objectClass" and not "objectclass".
up
0
software at inebria dot com
24 years ago
As of PHP 4.0.5, the ldap_get_attributes function does not work with binary data.  If you're fetching a JPEG from an LDAP server, use ldap_get_values_len instead.
up
-1
php dot net at hiddemann dot org
21 years ago
Note that ldap_get_attributes fetches attributes AND values from the LDAP server. Depending on the data stored in the entry, the following code might work a dozen times faster (or even better, but faster in general) than the code in Example 1:<?php// $ds is the link identifier for the directory// $sr is a valid search result from a prior call to// one of the ldap directory search calls$entry = ldap_first_entry($ds, $sr);$attrs = array();$attribute = ldap_first_attribute($ds,$entry,$identifier);while ($attribute) {   $attrs[] = $attribute;   $attribute=ldap_next_attribute($ds,$entry,$identifier);}echo count($attrs) . " attributes held for this entry:<p>";for ($i=0; $i<count($attrs); $i++) {   echo $attrs[$i] . "<br />";}?>You may want to check the time difference with the function "microtime".
up
-1
Snezko Snezak
19 years ago
Code and function to extract all attributes from all entryes in a certain DN. Maybe not the most timewise efficient but it works.$entry = ldap_first_entry($ds, $sr);write_attr($entry,$ds);for ($i = 0; $i < $n_entries; $i++){   $entry = ldap_next_entry($ds, $entry);   write_attr($entry,$ds);}function write_attr($entry,$ds){   $attrs = ldap_get_attributes ($ds, $entry);   for ($j = 0; $j < $attrs["count"]; $j++){      $attr_name = $attrs[$j];      $attrs["$attr_name"]["count"] . "\n";      for ($k = 0; $k < $attrs["$attr_name"]["count"]; $k++) {             echo ">>>>>>";             echo $attr_name.": ".$attrs["$attr_name"][$k]."\n";      }   }}
up
-2
dunc at rumbletum dot org
17 years ago
I spent quite a while scratching my head about how to read operational attributes such as create and modify timestamps.This function solved it....function get_entry_system_attrs( $ds, $dn, $deref=LDAP_DEREF_NEVER ){   $conn = $ds;   $attrs = array( 'creatorsname', 'createtimestamp', 'modifiersname',         'structuralObjectClass', 'entryUUID',  'modifytimestamp',         'subschemaSubentry', 'hasSubordinates', '+' );   $search = @ldap_read( $conn, $dn, '(objectClass=*)', $attrs, 0, 0, 0, $deref );   if( ! $search )      return false;   $entry = ldap_first_entry( $conn, $search );   if( ! $entry)       return false;   $attrs = ldap_get_attributes( $conn, $entry );   if( ! $attrs )      return false;   if( ! isset( $attrs['count'] ) )      return false;   $count = $attrs['count'];   unset( $attrs['count'] );   $return_attrs = array();   for( $i=0; $i<$count; $i++ ) {      $attr_name = $attrs[$i];      unset( $attrs[$attr_name]['count'] );      $return_attrs[$attr_name] = $attrs[$attr_name];   }   return $return_attrs;}
To Top