[PHP] Suppression d'un attribut multivalué dans un LDAP
Posté : 24 juin 2012, 14:39
Bonjour,
Je souhaiterais supprimer une valeur d'un attribut multivalué dans un annuaire LDAP mais même après de nombreuses recherches sur le web je n'y parviens pas.
Je travaille en PHP.
Voici l'entrée dans le LDAP sur laquelle on travaille:
cn liste.test
createTimestamp 20120621185416Z
creatorsName cn=directory manager
description Liste TEST
inetMailGroupStatus active
mail [email protected]
mgmanHidden false
mgmanJoinability Closed
mgmanMemberVisibility Closed
mgrpBroadcasterPolicy NO_REQUIREMENTS
mgrpMsgRejectAction REPLY
modifiersName cn=directory manager
modifyTimestamp 20120624112809Z
objectClass top
objectClass groupofuniquenames
objectClass inetLocalMailRecipient
objectClass inetmailgroup
objectClass inetmailgroupmanagement
uniqueMember uid=nico.test,ou=TEST,o=entreprise.com,o=corp
uniqueMember uid=paul.test,ou=TEST,o=entreprise.com,o=corp
uniqueMember uid=john.test,ou=TEST,o=entreprise.com,o=corp
L'objectif est du SUPPRIMER l'attribut:
uniqueMember uid=nico.test,ou=TEST,o=entreprise.com,o=corp
et de conserver les 2 autres.
J'ai essayé dans un premier temps de simplement MODIFIER l'uniquemember en question mais je n'y arrive déjà pas:
Warning: ldap_modify() [function.ldap-modify]: Value array must have consecutive indices 0, 1, ...
Merci d'avance pour votre aide si vous avez une idée!
Nico
Je souhaiterais supprimer une valeur d'un attribut multivalué dans un annuaire LDAP mais même après de nombreuses recherches sur le web je n'y parviens pas.
Je travaille en PHP.
Voici l'entrée dans le LDAP sur laquelle on travaille:
cn liste.test
createTimestamp 20120621185416Z
creatorsName cn=directory manager
description Liste TEST
inetMailGroupStatus active
mail [email protected]
mgmanHidden false
mgmanJoinability Closed
mgmanMemberVisibility Closed
mgrpBroadcasterPolicy NO_REQUIREMENTS
mgrpMsgRejectAction REPLY
modifiersName cn=directory manager
modifyTimestamp 20120624112809Z
objectClass top
objectClass groupofuniquenames
objectClass inetLocalMailRecipient
objectClass inetmailgroup
objectClass inetmailgroupmanagement
uniqueMember uid=nico.test,ou=TEST,o=entreprise.com,o=corp
uniqueMember uid=paul.test,ou=TEST,o=entreprise.com,o=corp
uniqueMember uid=john.test,ou=TEST,o=entreprise.com,o=corp
L'objectif est du SUPPRIMER l'attribut:
uniqueMember uid=nico.test,ou=TEST,o=entreprise.com,o=corp
et de conserver les 2 autres.
J'ai essayé dans un premier temps de simplement MODIFIER l'uniquemember en question mais je n'y arrive déjà pas:
//Connexion au LDAP puis...
//Préparation d'une requête pour compter et afficher tous les uniquemember de notre entrée:
$varSup = "liste.test";
$filtreReqSup="cn=$varSup";
$restrictionReqSup = array("uniquemember");
$sr=ldap_search($ds, $dn, $filtreReqSup, $restrictionReqSup);
$infoReqSup = ldap_get_entries($ds, $sr);
print $infoReqSup[0]["uniquemember"]["count"]." uniqueMembers trouvés" . "<br>";
//J'essaye de modifier mon uniquemember:
for ($i=0; $i<$infoReqSup[0]["uniquemember"]["count"]; $i++)
{
if($infoReqSup[0]["uniquemember"][$i] == "uid=nico.test,ou=TEST,o=entreprise.com,o=corp")
{
$sup["uniqueMember"][$i] = "uid=MODIF.test,ou=TEST,o=entreprise.com,o=corp";
$r=ldap_modify($ds, "cn=liste.test,ou=Misc,o=entreprise.com,o=corp", $sup);
}
}
//....
Quand j'exécute ce code, je me prends ce message d'erreur:Warning: ldap_modify() [function.ldap-modify]: Value array must have consecutive indices 0, 1, ...
Merci d'avance pour votre aide si vous avez une idée!
Nico