Rechercher : dans
Par :

[PHP <-> LDAP] Problème de d'accents

Dernière réponse le 28 avr 2006 à 20:57:11 Jack_le_Boulet, le 28 avr 2006 à 11:51:48 
 Signaler ce message aux modérateurs

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 :



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 :



//$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);

}




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

Meilleures réponses pour « [PHP < > LDAP] Problème de d'accents » dans :
Supprimer les accents avec PHP VoirPour un tas de raisons, il est parfois utile de convertir un texte accentué en un texte sans accents. Voici une fonction permettant de transformer très simplement la quasi-totalité des accents en leur équivalent non-accentués : function...
PHP - Nettoyer une chaîne de caractères VoirVoici une fonction en PHP qui peut être assez pratique, surtout quand on fait de l'URL Rewriting. Cette fonction permet de transformer les caractères de n'importe quelle chaîne de caractères en chaîne non accentuée, en enlevant les caractères...
PHP - Connexion à un annuaire LDAP VoirIntroduction à LDAP PHP permet la connexion et l'envoi de requêtes sur un annuaire LDAP, c'est-à-dire un serveur permettant de stocker des informations de manière hiérarchique. Un serveur LDAP est conçu pour être capable de gérer les opérations...
PHP - Administration d'un annuaire LDAP VoirIntroduction à LDAP PHP permet la connexion et l'envoi de requêtes sur un annuaire LDAP, c'est-à-dire un serveur permettant de stocker des informations de manière hiérarchique. Pour plus d'informations sur les fonctions LDAP de PHP, reportez...
Installation d'un serveur Web sous Linux (Apache, PHP et MySQL) VoirIntroduction Un serveur web est un logiciel permettant de rendre accessibles à de nombreux ordinateurs (les clients) des pages web stockées sur le disque. Cette fiche pratique explique comment installer le serveur web Apache sur un système de type...

1

Jack_le_Boulet, le 28 avr 2006 à 13:20:39

Petites informations supplémentaires :

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...)

Répondre à Jack_le_Boulet

2

 Jack_le_Boulet, le 28 avr 2006 à 20:57:11

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).

J'espère que ce post pourra éviter à d'autres une perte de temps précieu...

Répondre à Jack_le_Boulet