PHP et active directory, erreur

Résolu
Archeus01 Messages postés 1572 Date d'inscription   Statut Membre Dernière intervention   -  
kilian Messages postés 8732 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour,
j'aimerais modifier un utilisateur active directory à l'aide de PHP. Pour l'instant, j'essaye simplement d'en ajouter un et j'ai déjà des erreurs!

$ds = ldap_connect("ldap://"."asterix."."gaulois.lan") or die("Erreur de connexion à AD!");
if ($ds) {
// Connexion avec une identité qui permet les modifications (enfin je pense)
if (ldap_bind($ds, "administrateur", "")) {echo RL."identification ok".RL; }
else { echo RL."Problème d'identification ";}

// prepare les données
$info["cn"]='Jean Dupont';
$info["sn"]='Jean';
$info["mail"]='jeand@serveur.mail.com';
$info["objectclass"]='personne';

// Ajoute les données au dossier
$r=ldap_add($ds, "cn=Jean Dupont, o=Ma Compagnie, c=FR", $info);

ldap_close($ds);
} else {
echo RL.'Impossible de se connecter au serveur LDAP';
}

et j'ai

identification ok
PHP Warning: ldap_add(): Add: No such attribute in D:\www\intranet\frederic_svn
\classe\ScriptsEXT.php on line 1443

Warning: ldap_add(): Add: No such attribute in D:\www\intranet\frederic_svn\clas
se\ScriptsEXT.php on line 1443

La ligne 1443 est évidemment $r=ldap_add($ds, "cn=Jean Dupont, o=Ma Compagnie, c=FR", $info);.

Je me suis fortement inspiré de http://www.manuelphp.com/php/function.ldap-add.php ...
Personne ne saurait comment résoudre mon erreur?
A voir également:

3 réponses

Archeus01 Messages postés 1572 Date d'inscription   Statut Membre Dernière intervention   452
 
Bon, j'ai fini par résoudre mon problème \o/ après 8h de boulot dessus.

$ds = ldap_connect("ldap://"."asterix."."gaulois.lan") or die("Erreur de connexion à AD!");
if ($ds) {
// Connexion avec une identité qui permet les modifications
if (ldap_bind($ds, "administrateur", "mdp")) {echo RL."identification ok".RL; }
else { echo RL."Problème d'identification ";}

// On va chercher l'identifiant DN exact de la personne à modifier.

//On indique ce qu'il faut pour recherhcer
//La présence des intiales est uniquement la comme test.
$dn = "OU=Utilisateurs,DC=gaulois,DC=lan";
$person="fred";
$filter="(|(sn=$person*)(givenname=$person*))";
$justthese = array("dn","initials");
//On lance la recherche
$sr=ldap_search($ds, $dn, $filter, $justthese);

//On cherche dans le résultat le dn
$info = ldap_get_entries($ds, $sr);
//var_dump($info);
$dn = $info[0]['dn'];
if (is_null(($info[0]['initials'][0])) == false) {$initiale = $info[0]['initials'][0];echo "défini";}
else { $initiale ="";echo "pas défini"; }

//Echo qui permet de tester, RL est un retour à la ligne
echo RL."dn : $dn";
echo RL."initial : $initiale".RL;

//On initialise ce qu'il faut modifier
$mod['initials'][0]="pm";
$mod['thumbnailPhoto']=$contents;
ldap_modify ( $ds,$dn, $mod ); //on modifie
ldap_close($ds); //On oublie pas de fermer

} else {
echo RL.'Impossible de se connecter au serveur LDAP';
}
2
kilian Messages postés 8732 Date d'inscription   Statut Modérateur Dernière intervention   1 526
 
Salut,

Je crois qu'Active Directory est un ldap un peu spécial.
Regarde un petit exemple:
https://phpsources.net/
0
Archeus01 Messages postés 1572 Date d'inscription   Statut Membre Dernière intervention   452
 
Je vois pas trop le rapport en fait. Lui lit, j'ai aussi une fonction pour lire et pas de souci... Mais c'est pour modifier que je galère ^^'.
0
kilian Messages postés 8732 Date d'inscription   Statut Modérateur Dernière intervention   1 526 > Archeus01 Messages postés 1572 Date d'inscription   Statut Membre Dernière intervention  
 
Argh, ben désolé je peux pas t'aider :s
0
kilian Messages postés 8732 Date d'inscription   Statut Modérateur Dernière intervention   1 526
 
Ouch...Merci, ça en aidera sûrement d'autres ;-)
0