Bonjour à tous,
Avant de commencer, je tiens à m'excusez pour ce post car je ne savais absolument pas où mettre celui-ci... j'espère ne pas trop gêner
Voila, je suis entrain de réaliser une interface pratique LDAP en PHP et j'essaie depuis un moment d'ajouter des utilisateurs dans mon annuaire LDAP. J'y arrive plutôt bien jusqu'à ce que je décide de rajouter l'attribut "UidNumber", "GidNumber" et "HomeDirectory". Celui si dépend de l'ObjectClass ["posixAccount"]...
Voici l'extrait de code qui me permet d'ajouter un utilisateur ( avec en commentaire l'objectClass ["posixAccount"], je ne vous met pas tout le code car il n'est pas utile à la compréhension, mais je pourrais le mettre si besoin:
Et voici l'erreur que j'ai :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 ... $ajout["objectClass"][0]="inetOrgPerson"; $ajout["objectClass"][0]="fresnelPerson"; //$ajout["objectClass"][1]="posixAccount"; $ajout["objectClass"][1]="shadowAccount"; $ajout["cn"]=$_GET["info2"]["nom"]." ".$_GET["info2"]["prenom"]; $ajout["uid"]=$_GET["info2"]["prenom"].".".$_GET["info2"]["nom"]; $ajout ["sn"]=$_GET["info2"]["prenom"]; $ajout["mail"]=$_GET["info2"]["mail"]; $ajout["telephoneNumber"]="04 91 28 ".$_GET["info2"]["telephone"]; $ajout["statut"]=$_GET["info2"]["statut"]; $ajout["arrivaldate"]="".$_GET["info2"]["dateArrive"]." "; $ajout["birthDate"]=$_GET["info2"]["dateDepart"]." "; $ajout["etabAffec"]=$_GET["info2"]["etablissement"]; /*$ajout["gidNumber"]= 513; $ajout["homeDirectory"] = $ajout["uid"]; $ajout["uidNumber"]=rand(); */ $recherche=ldap_search($connect,"dc=fresnel,dc=fr", "uid=".$existe); if (($recherche)and($existe != ".")){ $supprime=ldap_delete($connect,"uid=".$existe.",ou=People,dc=fresnel,dc=fr"); echo $existe; if($supprime){ echo"<p> L'utilisateur précédant à bien été supprimé" ; } } $rn="uid=".$ajout["uid"].",ou=Comptabilité2,dc=fresnel,dc=fr"; //ligne 64 $add=ldap_add($connect, $rn, $ajout); ...
Warning: ldap_add() [function.ldap-add]: Add: Object class violation in C:\wamp\www\Interface LDAP\Ajout_Modif.php on line 64
lorsque j'enleve les 3 lignes de commentaires, l'ajout se fait, mais quand je vérifie la personne par le phpldapadmin, je ne vois que 3objectClass qui sont : fresnelPerson, shadowAccount, inetOrgPerson. Chose que j'ai du mal à comprendre...
De plus, sur une ancienne interface, dont je vais mettre le code juste dessus, celui-ci marche assez bien...(même si il y a certaines parties de code incompréhensible), d'où mon incompréhension sur les ObjectClass.
Voila, merci bcp à vous par avance pour vos réponses.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
60
61
62
63
64
65
66
67
68
69
70
71
72
73 $uidnumber = $nexfree[0]["uidnumber"][0]+1; echo "l'iudnumber est : $uidnumber"; $nexfree2["uidnumber"][0]=$nexfree[0]["uidnumber"][0]+1; $nexfree2["cn"][0]=$nexfree[0]["cn"][0]; $nexfree2["gidnumber"][0]=$nexfree[0]["gidnumber"][0]; $nexfree2["sn"][0]=$nexfree[0]["sn"][0]; $nexfree2["objectclass"][0]="inetOrgPerson"; $nexfree2["objectclass"][1]="sambaUnixIdPool"; $info["cn"]= strtolower($_POST['nom'])." ".strtolower($_POST['prenom']); $info["sn"]=strtolower($_POST['nom']); $info["uid"]=strtolower($_POST['prenom']).".".strtolower($_POST['nom']); $info["mail"]=strtolower($_POST['prenom']).".".strtolower($_POST['nom'])."@fresnel.fr"; $info["homedirectory"] = $info["uid"]; $info["gidNumber"]= 513; $info["uidNumber"]=$uidnumber; $info["objectclass"][0]="fresnelDoctorant"; $info["objectclass"][1]="posixAccount"; $info["objectclass"][2]="shadowAccount"; $info["shadowExpire"]=-1; $info["shadowFlag"]=13188; $info["shadowInactive"]=-1; $info["shadowLastChange"]=13188; $info["shadowMax"]=99999; $info["shadowMin"]=5; $info["shadowWarning"]=7; $uid = $info["uid"]; //$userpassword = $_POST['userpassword']; echo " pass1 = $userpassword"; $password = password_hash( $userpassword, crypt); $_POST['userpassword'] = $password; for ($i=0 ; $i<sizeof($tabvardocto) ; $i++){ $doc = $tabvardocto[$i]; if ($doc != "telephoneNumber") { if ($doc != "telephoneNumber2") { if (!$_POST[$doc]) { $nimp = "n/d" ; } else { $nimp = $_POST[$doc]; $nimp = strtolower($nimp); } if ($doc == 'presence' && $_POST[$doc] == true) { $nimp = "TRUE"; } elseif ($doc == 'presence' && $_POST[$doc] == false) { $nimp = "FALSE"; } $info[$doc] = $nimp; } elseif ($_POST['telephoneNumber2']) { $doc = "telephoneNumber"; $info[$doc][1] = $_POST['telephoneNumber2']; } } elseif (!$_POST['telephoneNumber']) { $info[$doc][0] = "n/d"; } else { $info[$doc][0] = $_POST['telephoneNumber']; } }//fin for // ajout dans l'annuaire $r=ldap_add($ds,"uid=$uid,$racine",$info);
Partager