Précédent   Forum des professionnels en informatique > PHP > Bibliothèques et frameworks
Bibliothèques et frameworks Forum d'entraide sur les frameworks, templates, bibliothèques de code (PDFLib, eZPdf, JpGraph, Artichow, PEAR, etc). Avant de poster : FAQ bibliothèques, toutes les FAQ PHP et cours bibliothèques
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 28/04/2006, 11h34   #1
Invité de passage
 
Inscription : février 2006
Messages : 14
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 14
Points : 2
Points : 2
Par défaut [LDAP] Problèmes d'accent dans les valeurs

Bonjour à tous/toutes,

voici mon problème :

je tente désepérément de développer un client web vers ma base LDAP (OpenLDAP sur une machine Ubuntu)

Lorsque le formulaire contenant le profil d'un utilisateur est validé je suis censé remettre a jour/insérer ses informations dans la base de données (logique...).

Lorsque d'une information ne contient pas de caractère particulier é, è ,...
Tout se passe très bien.
Sinon, j'ai cette erreur :

Citation:
Warning: ldap_add(): Add: Invalid syntax in /var/www/lib/lib_ldap.php on line 114
Avant de modifier la base, je prends bien soin de convertir la donnée en UFT-8 :

Citation:
//$new: classe 'user'
user_add($new)
{
$item['login'][0]=utf8_encode($new->login);
$item['nom'][0]=utf8_encode($new->nom);
...

ldap_data_insertion($connexion,'login='.$item['login'][0].',ou=personnes,'.$ldap_base,$item);
}
Citation:
ldap_data_insertion($conn,$item_dn,$item)
{
//Execution de la requete
$res=ldap_add($conn,$item_dn,$item);
if(!$res)
return makeResult(false,'LDAP[ADD]-INSERT_ERROR');
else
return makeResult(true);
}
Merci d'avance pour votre participation
Jack_le_Boulet est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/04/2006, 12h59   #2
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
Login et nom ne sont pas des attributs standards, vous êtes sûrs de votre coup ? De plus, il faut préciser la ou les classes objets dont dépend l'objet inséré.


Julp.
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/04/2006, 13h16   #3
Invité de passage
 
Inscription : février 2006
Messages : 14
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 14
Points : 2
Points : 2
Citation:
De plus, il faut préciser la ou les classes objets dont dépend l'objet inséré
Je précise bien les attributs "objectClass" si c'est cela que vous me demandez... ?

Citation:
Login et nom ne sont pas des attributs standards, vous êtes sûrs de votre coup ?
Oui ce ne sont pas des attributs standards (ce qui va etre modifié d'ici peu).
Le problème c'est que même avec des attributs standards, cela ne fonctionne pas.

Je m'explique :

Prenons l'attribut "l" qui lui est standard, son attribut supérieur est "name" (lui aussi standard).
La syntaxe de "name" est du "Distingished Name"... Or cette syntaxe n'accepte pas de caractères spéciaux tels que les accents.

Ce cas de figure vaut aussi pour pas mal d'autres attributs standards...

Cependant il faut que je puisse accepter les accents dans mon adresse, localite, etc,... !
Il faut donc que je modifie le schéma standard pour changer la syntaxe de ses attributs ou alors créer mes propres attributs !

Donc le choix se résume à :

Soit garder la compatibilité, atout des objets standards... Les accent sont oubliés !

Soit perdre les avantages des objets standards et pouvoir jouer avec les caractères spéciaux...


Quelqu'un a une conclusion/solution différente (j'avoue que cela m'arrangerai...)
Jack_le_Boulet est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/04/2006, 19h00   #4
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
C'est faux, les accents sont acceptés mais il vous faut les coder en UTF-8 (encodage de stockage pour les chaînes de caractère défini par RFC). Vous pourvez effectivement utiliser utf8_[en|de]code ou bien passer vos pages/scripts en UTF-8.
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/04/2006, 20h56   #5
Invité de passage
 
Inscription : février 2006
Messages : 14
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 14
Points : 2
Points : 2
En effet, après une scéance de tests plutôt fastidieuse, mes conclusions se sont avérées inexactes.

J'utilisais LDAP admin pour faire mes tests et cet outil est plutôt instable.
Il est pratique pour importer ses fichiers ldif mais pas évident pour vraiment l'utiliser comme client LDAP (il génère souvent des erreurs).

Mon problème PHP venait du fait que la syntaxe qu'utilisait mon objet était du IA5String (et non du String tout court).
En esseyant d'insérer des objets standards avec accents en utilisant LDAP admin, les tests n'étaient pas non plus concluant (les accents étaient très mal gérés, d'où ma conclusion).

Bref, autant utiliser les objets standards...

Je pense par contre que la conversion en UTF8 n'est obligée que lors de l'utilisation ldif (mes scripts PHP fonctionnent correctement sans conversions). En effet, les fichiers ldif ne supportent que le format ASCII et les accents n'y sont pas permis (d'où la conversion en UTF8).

En espérant que ce post pourra éviter à d'autres une perte de temps précieu, je vous remercie pour votre aide !
Jack_le_Boulet est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 03h07.


 
 
 
 
Partenaires

Hébergement Web