PHP
downloads | documentation | faq | getting help | mailing lists | reporting bugs | php.net sites | links | conferences | my php.net

search for in the

ldap_get_dn> <ldap_free_result
Last updated: Fri, 22 Aug 2008

view this page in

ldap_get_attributes

(PHP 4, PHP 5)

ldap_get_attributesObtiene los atributos de una entrada de un resultado de búsqueda

Descripción

array ldap_get_attributes ( resource $identificador_de_conexion , resource $identificador_de_entrada_de_resultado )

Devuelve toda la información de la entrada en un array multidimensional o FALSE en caso de error.

La función ldap_get_attributes() se emplea para simplificar la lectura de atributos y valores de una entrada de un resultado de búsqueda. El valor devuelto es un array multidimensional con todos los atributos y sus valores.

Si se dispone de una entrada específica del directorio se puede obtener la información que contiene dicha entrada haciendo uso de esta función. Se suele emplear esta función para aplicaciones que navegan por las entradas del directorio y/o cuando no se conoce la estructura de las entradas del directorio. La mayoría de aplicaciones sin embargo, buscan un atributo específico, como la dirección de email o los apellidos y no se ocupan del resto de atributos contenidos en la entrada.

valor_devuelto["count"] = numero de atributos en la entrada
valor_devuelto[0] = primer atributo
valor_devuelto[n] = enesimo atributo

valor_devuelto["atributo"]["count"] = numero de valores del atributo
valor_devuelto["atributo"][0] = primer valor del atributo
valor_devuelto["atributo"][i] = iesimo valor del atributo

Example #1 Mostrar la lista de atributos contenida en una entrada específica de un directorio

<?php
// $ds es un identificador de conexion al directorio

// $sr es un resultado de busqueda valido de una llamada
// anterior a una de las funciones de busqueda en directorios
// LDAP.

$entrada ldap_first_entry($ds$sr);

$atributos ldap_get_attributes($ds$entrada);

echo 
$atributos["count"]." atributos contenidos en esta entrada:<p>";

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

Vea también ldap_first_attribute() y ldap_next_attribute()



ldap_get_dn> <ldap_free_result
Last updated: Fri, 22 Aug 2008
 
add a note add a note User Contributed Notes
ldap_get_attributes
dunc at rumbletum dot org
18-Oct-2007 02:52
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;
}
Snezko Snezak
27-Jul-2006 01:06
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";
      }
   }
}
php dot net at hiddemann dot org
02-Jul-2004 10:59
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".
kop at meme dot com
29-Jul-2003 11:28
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.)
allie at pajunas dot com
20-May-2002 08:52
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".
software at inebria dot com
21-Jun-2001 10:31
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.

ldap_get_dn> <ldap_free_result
Last updated: Fri, 22 Aug 2008
 
 
show source | credits | stats | sitemap | contact | advertising | mirror sites