Vous êtes ici Forums
  |  Connexion
 Forums
HomeHomeForums DNNForums DNNTraduction et l...Traduction et l...Couriel refusé ( - ) Couriel refusé ( - )
Précédente
 
Suivante
Nouveau message
17/02/2007 03:09
 

Un courriel n'est pas accepté dans la dernière version de DotNetNuke
si celui-ci contient le terme ( - ) ex.: monadresse-auquebec@hotmail.com
------------------------------------------------> le tiret est donc rejetté et le
courriel n'est accepté lors de l'inscription.

            Mystère et boulle de gomme.

McBerman / Montréal Québec. / Canada / Planette Terre ( Bleu tirant sur le gris fumée réchauffé )

 
Nouveau message
17/02/2007 08:53
 
Bonjour, problème déjà signalé, avez-vous essayé de mettre le site en US et de tenter une inscription (donc sans passer par le pack de langue) je devais le tester mais je n'ai pas eu le temps.

Mick

Mick @ BSI (www.bsi.fr)
 
Nouveau message
17/02/2007 12:02
 
:)
C'est bizarre ça.
 
Nouveau message
03/03/2007 18:56
 

Bonjour,

même problème.

Quelqu'un a résolu le problème avant que je cherche ?

 

Roland


Roland
 
Nouveau message
05/03/2007 03:05
 

Bonjour,

C'est un problème d'expression rationnelle ! Les fameuses RegEx (Regular Expressions in English). J'ai regardé le code généré dans la page d'identification, le contrôle "dnn_ctr_ManageUsers_User_UserEditor__ctl4_Email_RegEx" contient l'expression "\b[a-zA-Z0-9._%-+']+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}\b". Or, lorsque l'on utilise les crochets dans une regex le tiret a une signification particulière. Il sert a indiquer une plage de valeurs comme "a-z" ou encore "A-Z". Ces deux formes signifient "accepte les lettres minuscules de a à z et les majuscules A à Z". Dans le premier groupe entre crochets, l'automate comprend "accepte les caractères entre % et +", ce qui est faux ! Donc le premier tiret entre le signe % et le + devrait être écrit "\-" pour indiquer "accepte le caractère "-". Il suffirait d'ajouter un caractère "\" devant le premier tiret pour que cela fonctionne. CQFD.

Le problème, c'est que j'ai regardé dans le fichier user.ascx (qui devrait être le bon) et c'est une autre expression qui s'y trouve !? Alors si quelqu'un sait où trouver les paramètres d'inscription, merci de nous l'indiquer. C'est pénible d'avoir la solution et de ne pas savoir où l'appliquer ! GRRRR

Gilles

 
Nouveau message
06/03/2007 01:08
 

Bonjour,

J'ai trouvé où est cette foutue expression ! Le problème (comme d'hab) c'est que le core team a utilisé des attributs de propriété pour définir la valeur par défaut de l'expression de validation du champ email. C'est donc dans la dotnetnuke.dll qu'elle se trouve. D'où le fait que ma modification de l'expression dans User.ascx n'a servi à rien. Mais je ne sais pas s'il est possible de modifier un attribut d'une fonction sans modifier le code et recompiler le tout. Pour ceux qui veulent tout même faire la modification, voici la marche à suivre que j'ai testé.

Ouvrir le fichier de la solution (DotNetNuke.Library.sln) qui se trouve dans C:\DotNetNuke\Libray pour une installation de base. Dans le projet, cliquez sur le dossier Components puis Users et ouvrez le fichier UserInfo.vb. Sur la ligne 120 au début de la propriété Email, vous trouverez l'expression. Remplacez-la par celle-ci : \b[a-zA-Z0-9._%\-+']+@[a-zA-Z0-9.\-]+\.[a-zA-Z]{2,6}\b

En fait, il y a trois bogues dans l'expression (corrigés en rouge au dessus). Notez que je n'avais pas vu le second tiret sans anti-slash dans le deuxième groupe, et tant qu'on y est le 4 de fin est devenu 6. L'ICANN qui gère les TLD (Top Level Domain) a approuvée des nouveaux domaines dont .museum et .travel qui font chacun 6 lettres. Avez-vous compris le troisième bogue de cette expression ?

Une fois la modification effectuée, si vous compilez vous devriez avoir quelques erreurs. Car sans quoi ce serait trop simple, non ? Il devrait y avoir deux références erronées, si vous avez la même version des sources que la mienne. Pour corriger, faites clic droit sur le projet DotNetNuke.Library puis sélectionnez Propriétés. Cliquez sur l'onglet Références, vous devriez avoir CountyListBox et DotNetNuke.WebUtility en erreur. Supprimez ces deux références, puis ajoutez-les à nouveau. Elles se trouvent dans un sous dossier du même nom puis bin dans C:\DotNetNuke\Libray\Controls. Ceci fait, passer en configuration Release puis compilez. Il ne vous reste plus qu'a copier le fichier C:\DotNetNuke\Libray\DotNetNuke.dll sur votre instance de dnn. N'oubliez pas de faire une sauvegarde au préalable, on ne sait jamais !

Gilles

 
Nouveau message
06/03/2007 14:30
 

Bonjour,

Sur les conseils judicieux de Davis, je suis allé faire un tour sur support.dotnetnuke.com pour remonter ce problème. J'y ai découvert que c'était déjà fait depuis un mois environ (Issue : DNN-5011). Charles Nurse du core team arrive aux mêmes conclusions. J'ai toutefois ajouté mon commentaire pour le 6 de fin et demandé à ce qu'ils suppriment l'expression des attibuts. Je préférais lorsqu'elle était dans User.ascx, au moins là il ne fallait pas modifier le source pour faire ce que l'on voulait. Donc affaire à suivre.

Gilles

 
Nouveau message
06/03/2007 23:55
 

Merci Gilles,

Quand j'ai vu ton post m'étant en cause une expression régulière j'ai commencé à m'inquiéter. Les expressions régulières pour moi c'est un peu comme de la magie à chaque fois que je replonge dedans. Trois heures pour comprendre comment ça marche à chaque fois, et c'est oublié en moins d'une semaine... Tu es donc un peu comme Merlin enchanteur qui vient de me résoudre le problème d'un coup de maguette magique. Reste plus qu'à recompiler le Core...

ps : je bataille pour comprendre comment fonctionne anksvn et subversion, mais ça avance.

a+

Roland


Roland
 
Nouveau message
07/03/2007 13:34
 

Bonjour Roland,

Il n'y a rien de magique, c'est toute la puissance des expressions rationnelles qui fait le boulot !

Je conseille à tous ceux qui ne connaissent pas ou peu ce sujet de consulter les sites suivant :

  • The Regulator de Roy Osherove qui est un projet open source en .net pour créer et évaluer ses regex.
  • RegExLib (du même auteur) qui est une excellente librairie de regex à laquelle peut se connecter The Regulator.
  • RegExBuddy de JGSoft (29,95 €) que j'utilise car je trouve son mode debug très pratique.
  • Regular-Expressions qui est un tutorial (in English) par JGSoft disponible aussi à l'achat (19,95 € ?).

Enfin, LE livre de référence : Mastering Regular Expressions qui existe aussi en français.

Gilles

 
Nouveau message
07/03/2007 19:11
 

Merci Gilles,

tout fonctionne correctement. Par contre j'ai pas eu de problèmes de références, tout a marché nickel à la compil.

Pour les expressions régulières c'est vrai que c'est très pratique, mais c'est vraiment le truc que je me refuse d'apprendre par coeur de peur d'encombrer ma place mémoire  (limitée). Je garde tes liens précieusement.

Roland


Roland
 
Nouveau message
13/03/2007 16:53
 

Bonne nouvelle !

Mes commentaires ont portés leur fruit. Charles Nurse du core team vient d'annoncer sur Gemini que l'expression devriendra un paramètre de validation de l'email dans les paramètres utilisateurs. Vivement la prochaine version ! Toutefois, elle devrait rester telle quelle est aujourd'hui. Car d'après lui elle fonctionne dans 98% des cas. Alors il faudra penser à la modifier après la prochaine mise à jour.

Gilles

 
Nouveau message
14/03/2007 10:32
 
Merci de l'info ploum, vivement la 4.5 alors en espèrant que ce soit bel et bien résolu :)

Mick @ BSI (www.bsi.fr)
 
Précédente
 
Suivante
HomeHomeForums DNNForums DNNTraduction et l...Traduction et l...Couriel refusé ( - ) Couriel refusé ( - )