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 — Lit toutes les valeurs d'une entrée LDAP
Description
Lit toutes les valeurs de l'attribut d'une entrée dans un résultat.
L'utilisation de la fonction result_entry_identifier requiert un résultat de recherche, et doit donc être précédée d'une recherche LDAP, et de l'une des fonctions permettant d'accéder à une entrée.
Votre application doit contenir des informations permettant de lire certains attributs (comme "nom" ou "mail"), ou bien vous devrez utiliser la fonction ldap_get_attributes() pour savoir quels sont les attributs qui existent pour une entrée donnée.
Liste de paramètres
- link_identifier
-
Un identifiant de lien LDAP, retourné par la fonction ldap_connect().
- result_entry_identifier
-
- attribute
-
Valeurs de retour
Retourne un tableau de valeurs pour l'attribut, ou FALSE en cas d'erreur. Le nombre de valeurs retournées est disponible à l'index 'count' du tableau retourné. Les valeurs sont accessibles individuellement, avec les index numériques du tableau. L'indexation commence à 0.
LDAP permet plus d'une entrée par attribut, ce qui permet de stocker plusieurs adresses emails par personne, tout en n'utilisant qu'une étiquette "mail" :
return_value["count"] = nombre de valeurs de l'attribut
return_value[0] = première valeur de l'attribut
return_value[i] = i-ième valeur de l'attribut
Exemples
Exemple #1 Liste toutes les valeurs de l'attribut "mail" d'une entrée
<?php
// $ds doit être une ressource de connexion valide
// $sr doit être une ressource de résultat valide, obtenue avec une des fonctions de
// recherche LDAP.
// $entry est une entrée LDAP valide, obtenue avec une des fonctions
// LDAP qui retourne une entrée
$values = ldap_get_values($ds, $entry,"mail");
echo $values["count"] . " adresses email pour cette entrée.<br />";
for ($i=0; $i < $values["count"]; $i++) {
echo $values[$i] . "<br />";
}
?>
ldap_get_values
25-Mar-2003 02:24
21-Jun-2001 05: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.
