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.
ldap_get_values
(PHP 4, PHP 5)
ldap_get_values — Obtiene todos los valores de una entrada de un resultado
Descripción
Devuelve un array de valores del atributo o FALSE en caso de error.
La función ldap_get_values() se emplea para obtener todos los valores de un atributo de una entrada de un resultado. La entrada del resultado es especificada por el parámetro identificador_de_entrada_de_resultado . El número de valores se puede obtener haciendo una llamada a la función count() sobre el array devuelto. Los valores individuales se almacenan en el array con índices enteros. El primer índice es 0.
Esta función necesita un identificador_de_entrada_de_resultado , por lo que previamente se deben realizar llamadas a las funciones de búsqueda LDAP y una llamada a la función que obtiene una entrada particular del resultado.
La aplicación debe ser o bien programada específicamente para buscar ciertos atributos (como apellidos o email) o bien utilizar la función ldap_get_attributes() para averiguar que atributos existen para una entrada dada, antes de llamar a ldap_get_values().
LDAP permite mas de un valor para cada atributo, por lo que se puede, por ejemplo, almacenar varias direcciones de email para una persona en el directorio y nombrar a ese atributo como "mail".
valor_devuelto["count"] = numero de valores del atributo valor_devuelto[0] = primer valor del atributo valor_devuelto[i] = iesimo valor del atributo
Example #1 Listar todos los valores del atributo "mail" de una entrada 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 b&usqueda en directorios
// LDAP.
// $entrada es un identificador de entrada valido de una llamada
// anterior a una de las funciones que devuelven una entrada de
// directorio
$valores = ldap_get_values($ds, $entrada,"mail");
echo $valores["count"]." direcciones de email para esta entrada.<br />";
for ($i=0; $i < $valores["count"]; $i++) {
echo $valores[$i]."<br />";
}
?>
ldap_get_values
25-Mar-2003 03:24
21-Jun-2001 07:34
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.
