[RESOLU] ldap_add invalid syntax

elerf
Invité n'ayant pas de compte PHPfrance

26 mai 2013, 13:30

Bonjour à tous,

J'ai un problème avec ldap_add, je m'en sors pas, je ne vois pas l'erreur.

Avec le bout de code suivant, ldap_add me renvoie l'erreur Invalid Syntax :

Code : Tout sélectionner

for ($i=0; $i<array_pop(array_keys($ldif)); $i++) { $dn=$ldif[$i]['dn']; unset($ldif[$i]['dn']); if (ldap_add($con, $dn, $ldif[$i]) === false) { $msg[] = "Erreur d'ajout."; return false; } else { $msg[] = "Fichier import&eacute; avec succ&egrave;s !"; } }
Le contenu de $ldif[$i] qui pose problème :
Array
(
[mail] => prenom.nom'arobas'test.fr //J'ai du remplace @ par 'arobas pour ne pas être classer en spam
[sn] => NOM
[givenName] => prenom
[userPassword] => 01031991
[uid] => [email protected]
[cn] => Prenom NOM
[objectClass] => Array
(
[0] => person
[1] => organizationalPerson
[2] => supannPerson
[3] => iutSenartPerson
[4] => eduPerson
[5] => inetOrgPerson
)

)

Maintenant, si je déclare "à la main" le tableau d'attributs, comme ceci :

Code : Tout sélectionner

$test = array( "mail" => "prenom.nom'arobas'test.fr", //J'ai du remplace @ par 'arobas' pour ne pas être classer en spam "sn" => "NOM", "givenName" => "prenom", "userPassword" => "01031991", "uid" => "[email protected]", "cn" => "Prenom NOM", "objectClass" => array( "0" => "person", "1" => "organizationalPerson", "2" => "supannPerson", "3" => "iutSenartPerson", "4" => "eduPerson", "5" => "inetOrgPerson" ) );
et que je rappelle la fonction ldap_add avec le nouveau paramètre, cela fonctionne.

Code : Tout sélectionner

if (ldap_add($con, $dn, $test) === false) { $msg[] = "Erreur d'ajout."; return false; }
Je ne comprends pas. Que ce soit la variable $ldif[$i] ou $test, le contenu est le même !
Mais ldap_add($con, $dn, $ldif[$i]) renvoie l'erreur Invalid Syntax
Alors que ldap_add($con, $dn, $test) passe sans problème.

Merci de votre aide.

elerf
Invité n'ayant pas de compte PHPfrance

26 mai 2013, 18:38

J'ai trouvé tout seul finalement.

En fait, chacune des valeurs du tableau $ldif[$i] commençait par un espace, ce qui provoquait l'erreur.

C'était quelque chose comme ça :
[mail] => espaceprenom.nom'arobas'test.fr //J'ai du remplace @ par 'arobas pour ne pas être classer en spam
[sn] => espaceNOM
[givenName] => espaceprenom
[userPassword] => espace01031991
[uid] => espace[email protected]
[cn] => espacePrenom NOM
...

En enlevant cet espace en trop, ça passe !

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

26 mai 2013, 22:09

Modération :
Puisque ta question est résolue, je l'indique en cliquant sur le bouton "Mettre le sujet en tant que Résolu" pour que les futures personnes qui voudront consulter ce sujet sachent qu'il contient une solution.

Tu peux réaliser cette opération toi-même en cliquant sur le bouton vert situé en haut de la page à côté du titre, si tu as posté le 1er message en tant que membre (inscrit et identifié).

Alors... inscris-toi !!! ;)
Il en faut peu pour être heureux ......