php - ldap - modification d'un attribut de type 'array'
bonjour,
puisque j'ai eu du succès avec la 1ère partie de mon script, je reviens avec la suite...
Je dois ajouter un contact dans un groupe. Je pensais faire ça de la manière suivante, je fais une recherche sur mon groupe via la 'class=group', je lui modifie la valeur de l'attribut 'member' pour lui en rajouter 1.
Mais c'est là que ça se complique parce que member est un array et que je ne vois pas comment lui ajouter un élément. Ma solution fonctionne pour ajouter un mail mais si l'élément est un array ça cassse....
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
|
<?php
// Structure d'une commande simple :
// connexion, lien, recherche, interpretation de la recherche
// résultat, déconnexion
echo "<h3>LDAP query test</h3><br>";
$ldap_user ="CN=Administrateur";
$ldap_pass = "XXX";
echo "Connexion ...";
$ds=ldap_connect("XXX.XXX.XXX.XXX"); // Doit être un serveur LDAP valide!
echo "Résultat de la connexion : ".$ds."<p>";
if ($ds) {
echo "Lien ...";
$$r= ldap_bind($ds, $ldap_user, $ldap_pass);
echo "Lien résultat est ".$r."<p>";
echo "Recherche de (cn=Testtaires*) ...";
// Recherche dans les noms
$sr=ldap_search($ds,"DC=win,DC=info,DC=pcf", "cn=Testtaires");
echo "Résultat : ".$sr."<p>";
echo "Nombre d'entrée retournée : ".ldap_count_entries($ds,$sr)."<p>";
echo "Lecture des entrées...<p>";
$info = ldap_get_entries($ds, $sr);
echo "Data for ".$info["count"]." items returned:<p>";
for ($i=0; $i<$info["count"]; $i++)
{
echo "dn vaut : ". $info[$i]["dn"] ."<br>";
echo "première entrée cn vaut : ". $info[$i]["cn"][0] ."<br>";
echo "premièr membre vaut: ". $info[$i]["member"][0] ."<p>";
echo "tot en info: " . $info[$i]["member"]["count"];
$TotMember = $info[$i]["member"]["count"];
for ($j=0; $j<$info[$i]["member"]["count"]; $j++)
{
echo "<br>J: " .$j;
echo $info[$i]["member"][$j]."<br>";
$modif["add"]["member"][$j]="1";
}
}
echo "<br>tot: ".$TotMember."<br>";
$modif["add"]["member"][$TotMember]="CN=eich her,OU=ouParlementairesTest,OU=ouContacts,DC=win,DC=info,DC=toto";
$result=ldap_modify($ds,"CN=TestParlementaires,OU=ouMail,OU=ouGroups,DC=win,DC=info,DC=toto",$modif);
echo "<br>Déconnexion ";
ldap_close($ds);
}
else
{
echo "<h4>Impossible de se connecter à un serveur LDAP </h4>";
}
?> |
j'essaie de compter le nombre d'élément de l'array member, ça c'est ok
Code:
echo "<br>tot: ".$TotMember."<br>";
et pour rajouter mon élément je prends l'indice
Code:
$modif["add"]["member"][1]="CN=eich her,OU=ouParlementairesTest,OU=ouContacts,DC=win,DC=info,DC=toto";
mais il me donne ceci...
LDAP query test
Connexion ...Résultat de la connexion : Resource id #2
Lien ...Lien résultat est
Recherche de (cn=TestParlementaires*) ...Résultat : Resource id #3
Nombre d'entrée retournée : 1
Lecture des entrées...
Data for 1 items returned:
dn vaut : CN=TestParlementaires,OU=ouMail,OU=ouGroups,DC=win,DC=info,DC=pcf
première entrée cn vaut : TestParlementaires
premièr membre vaut:
tot en info:
tot:
Warning: ldap_modify() [function.ldap-modify]: Value array must have consecutive indices 0, 1, ... in /var/www/test/ldap0.php on line 53
Déconnexion
et je sèche sur ce "Value array must have consecutive indices 0, 1, ..."
merci et bon we !:ccool: