Récupérer attribut telephoneNumber dans active directory

jpclutier Messages postés 23 Date d'inscription lundi 13 novembre 2006 Statut Membre Dernière intervention 6 mars 2009 - 6 mars 2009 à 13:35
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 - 8 mars 2009 à 09:37
Bonjour,
Je dois accéder à l'annuaire active directory et récupérer l'attribut telephoneNumber pour un utilisateur donné (voir le code ci-après).
Je n'y parviens pas et j'ai toujours l'erreur suivante :
Notice: Undefined index: telephoneNumber in C:\Program Files\EasyPHP 3.0 www\Intranet\includes\validlogin.php on line (ligne de l'echo ("Poste 1 ....
Pouvez-vous m'aider svp ?
Merci

<?PHP


$userid=$_POST['userid']; //récupération userlogin
$userpwd=$_POST['userpwd']; //récupération userpwd
$pageret=$_POST['pageretour']; //récupère la page à appeler si login ok


// LDAP variables
$ldaphost = "monserveur";  // votre serveur LDAP
$ldapport = 389;                 // votre port de serveur LDAP
$dn = "ou=xxxx,dc=xxxx,dc=loc";
$ldapusr="adminldap";
$ldappwd="pwd";


// Connecting to LDAP
$ldapconn = ldap_connect( $ldaphost,$ldapport)
          or die( "Impossible de se connecter au serveur LDAP {$ldaphost}" );
     
if ($ldapconn)
 {
  //Connexion anonyme au serveur LDAP
  $ldapbind = ldap_bind($ldapconn, $ldapusr,$ldappwd);


  if ($ldapbind)
   {
 $verifuid= rechercheuid($userid,$ldapconn,$dn); // vérification code utilisateur
   }
  else
   {
    echo "Connexion LDAP échouée";
   }
 }
if ($verifuid)
{
 $ch="uid=".$userid.$dn;
 $verifpwd=recherchepwd($userpwd);
}
else
{
 echo "Utilisateur inconnu";
}


if ($verifpwd === TRUE)
{
 $retour= TRUE; // le login est bon
}
elseif ($verifpwd === FALSE)
{
 $retour= FALSE;
 echo "Mot de passe incorrect!";
}
ldap_close($ldapconn);
//return $retour;


function rechercheuid($id,$conn,$d)
{
 //recherche uid saisi
 $filter="(|(SAMAccountName=$id))";
 $justthese = array("SAMAccountName","name","SN","CN","dn","mail","telephoneNumber","homephone","mobile");
 $sr=ldap_search($conn, $d, $filter);
 
 echo "nombre=".ldap_count_entries($conn,$sr);
 
 $info = ldap_get_entries($conn,$sr);


echo  "Affichage des données des ".$info["count"]. " entrées trouvées :";


   for ($i=0; $i<$info["count"]; $i++)
    {
    echo  "";
    echo  "Le dn (Distinguished Name) est: ". $info[$i]["dn"] ."
";
    echo  "Nom (sn) : ". $info[$i]["sn"][0] . "
";
    echo  "Prénom (cn) : ". $info[$i]["cn"][0] . "
";
    echo  "Name  : ". $info[$i]["name"][0] . "
";
       echo  "GivenName  : ". $info[$i]["givenname"][0] . "
";
       echo  "Displayname : ". $info[$i]["displayname"][0] . "
";
       echo  "logoncount : ". $info[$i]["logoncount"][0] . "
";
    echo  "Poste1  : ". $info[$i]["telephoneNumber"][0]. "
";
       echo  "Poste2  : ". $info[$i]["otherTelephone"][0]. "
";
    echo  "Teldom  : ". $info[$i]["homephone"][0]. "
";
    echo  "Telmob  : ". $info[$i]["mobile"][0]. "
";
    for($j=0;$j<$info[$i]["mail"]["count"];$j++)
     {
      $rang=$j+1;
      echo  "Email numéro $rang: ". $info[$i][ "mail"][$j] ."
";


  }
    }
$entry = ldap_first_entry($conn,$sr);


$attrs = ldap_get_attributes($conn, $entry);
echo $attrs["count"] . " attributs dans cette entrée :";


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


 return $sr;
}

JP

4 réponses

cs_mike1310 Messages postés 232 Date d'inscription jeudi 30 août 2007 Statut Membre Dernière intervention 31 juillet 2009
6 mars 2009 à 16:03
Et tu sûr qu'il est bien mis dans ton tableau $infos.

Parce que d'après ce que je vois, ton tableau $justthese ne te sert à rien. Il n'est pas utilisé dans ton code. Donc soit bien sûr que les infos que tu utilises sont setter.
0
jpclutier Messages postés 23 Date d'inscription lundi 13 novembre 2006 Statut Membre Dernière intervention 6 mars 2009
6 mars 2009 à 16:15
le filtre servait pour d'autres test ($justthese). Sans le filtre tous les attributs sont récupérés. Mais soit le nom n'est pas bon soit la méthode de récupération de l'attribut telephoneNumber (ce que je crois plutôt)...mais je n'arrive à rien..

JP
0
kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
6 mars 2009 à 17:13
Salut,

Je ne connais que très peu ldap, mais essaie :
- phone à la place de telephoneNumber
- telephonenumber en minuscule

Cordialement,

Kohntark -
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
8 mars 2009 à 09:37
Hello,

déjà, fais un print_r() de ton tableau de données, tu verras bien quelles données sont disponibles...
0
Rejoignez-nous