OVH Cloud OVH Cloud

Controler la cohérence d'une adresse mel

12 réponses
Avatar
Serafin
Bonjour,

Avant de faire un enregistrement dans une base de donnée j'aimerais
faire un minimum de controle sur l'adresse mel tapée par l'internaute
(plus poussé que la seule présence de l'@.

Existe-t-il des fonctions js faisant celà ?

Merci.

http://coatmeur.info

10 réponses

1 2
Avatar
kurtz le pirate
In article <446f0aba$0$21304$,
Serafin wrote:

Bonjour,

Avant de faire un enregistrement dans une base de donnée j'aimerais
faire un minimum de controle sur l'adresse mel tapée par l'internaute
(plus poussé que la seule présence de l'@.

Existe-t-il des fonctions js faisant celà ?


par exemple :
<http://www.google.fr/search?hl=fr&q=controle+adresse+mail&btnG=Recherche
+Google&meta=>

--
klp

Avatar
Rue des Prairies
Bonjour,

Avant de faire un enregistrement dans une base de donnée j'aimerais
faire un minimum de controle sur l'adresse mel tapée par l'internaute
(plus poussé que la seule présence de l'@.

Existe-t-il des fonctions js faisant celà ?

Merci.

http://coatmeur.info


Bonjour,

C'est loin d'être trivial, voici l'expression rationnelle qui permet ce
contrôle :

http://www.ex-parrot.com/~pdw/Mail-RFC822-Address.html

Olivier.

Avatar
Serafin
Merci,
j'ai trouvé une petite fonction qui a l'air de fonctionner assez bien,
sauf que les extentions à 4 lettres .info par exemple ne marche pas. La
fonction
function controle_mel(id) {
var mail = document.form_blog.mel.value;
var reponse = /^w+([.-]?w+)*@w+([.-]?w+)*(.w{2,3})+$/;
var element=document.getElementById(id);
if(!reponse.test(mail)){
alert("Vous n avez pas saisie une adresse email valable !");
element.focus;

J'ai bien pensé a changer la ligne
var reponse = /^w+([.-]?w+)*@w+([.-]?w+)*(.w{2,3})+$/;
par
var reponse = /^w+([.-]?w+)*@w+([.-]?w+)*(.w{2,3,4})+$/;
mais c'eut été trop simple. Ca ne marche pas.

J'ai cherché de la doc sur la fonction test mais cela ne m'a pas aidé.
Une idée ?
Merci

http//coatmeur.info (oui, 4 lettres après le point, je suis sensibilisé...

Avant de faire un enregistrement dans une base de donnée j'aimerais
faire un minimum de controle sur l'adresse mel tapée par l'internaute
(plus poussé que la seule présence de l'@.

Existe-t-il des fonctions js faisant celà ?



par exemple :
<http://www.google.fr/search?hl=fr&q=controle+adresse+mail&btnG=Recherche
+Google&meta=>




Avatar
Olivier Miakinen

Avant de faire un enregistrement dans une base de donnée j'aimerais
faire un minimum de controle sur l'adresse mel tapée par l'internaute
(plus poussé que la seule présence de l'@.

Existe-t-il des fonctions js faisant celà ?


Tout d'abord, sache que tout contrôle que tu peux faire en javascript ne
sert qu'à améliorer la vie de l'utilisateur (en le prévenant au plus tôt
que sa requête ne sera pas acceptée) et surement pas à garantir quoi que
ce soit dans ta base de données : d'abord n'importe qui peut désactiver
javascript, et de plus quiconque ayant des intentions malicieuses peut
faire n'importe quelle requête vers ton serveur.

C'est donc sur le *serveur* qu'il faut faire les contrôles (par exemple
en PHP), et pas sur le client (par exemple en JavaScript). Cela dit,
rien ne t'empêche de faire sur le client le contrôle que tu *referas*
sur le serveur. Par exemple :
/^[.A-Za-z0-9!#$%&'*+/=?^_`{|}~-]+@[.A-Za-z0-9-]+$/

Par ailleurs, le seul contrôle vraiment valable consiste à envoyer un
courriel à l'adresse que l'on t'a fournie, et à n'enregistrer l'adresse
que si tu reçois une réponse à ce courriel (pas un bounce, bien sûr).

En effet, une adresse peut être parfaitement bien formée, voire même
valide, mais ne pas appartenir à la personne qui te l'a envoyée. Si
tu ne veux pas te faire fermer ton compte pour spam, une demande de
confirmation d'inscription (bien évidemment unique) est requise avant
d'enregistrer cette adresse.

Note qu'il y a quelques semaines j'ai fait de longues recherches dans
les RFC et ailleurs (avec questions posées sur fr.comp.lang.php et
fr.comp.mail) afin de mettre à jour la FAQ de fclp. Voici le résultat :
<http://faqfclphp.free.fr/#rub5.3>.

Cordialement,
--
Olivier Miakinen

Avatar
Olivier Miakinen

C'est loin d'être trivial, voici l'expression rationnelle qui permet ce
contrôle :

http://www.ex-parrot.com/~pdw/Mail-RFC822-Address.html


... et encore, il faut avoir supprimé les commentaires avant ! Mais
bon, on peut faire plus simple sans tomber dans les expressions trop
simplistes (telles que celles qui refusent la mienne, pourtant valide).

Avatar
Olivier Miakinen

j'ai trouvé une petite fonction qui a l'air de fonctionner assez bien,
sauf que les extentions à 4 lettres .info par exemple ne marche pas.
[...]
var reponse = /^w+([.-]?w+)*@w+([.-]?w+)*(.w{2,3})+$/;


Les extensions à 6 lettres comme .museum ne marchent pas non plus,
mais ce n'est pas le plus grave. Mon adresse <om+
ne sera pas acceptée non plus, or elle est parfaitement valide.
Même une adresse du style devrait être refusée par
cette connerie d'expression que tu as trouvée (et dieu sait si on en
rencontre sur les sites web !)

J'ai bien pensé a changer la ligne
var reponse = /^w+([.-]?w+)*@w+([.-]?w+)*(.w{2,3})+$/;
par
var reponse = /^w+([.-]?w+)*@w+([.-]?w+)*(.w{2,3,4})+$/;
mais c'eut été trop simple. Ca ne marche pas.


Je ne te donne même pas la syntaxe pour faire ce que tu veux faire. Va
plutôt lire la FAQ de fr.comp.lang.php, déjà indiquée dans un article
précédent.

Avatar
ASM
Merci,
j'ai trouvé une petite fonction qui a l'air de fonctionner assez bien,
sauf que les extentions à 4 lettres .info par exemple ne marche pas. La
fonction
function controle_mel(id) {
var mail = document.form_blog.mel.value;
var reponse = /^w+([.-]?w+)*@w+([.-]?w+)*(.w{2,3})+$/;


var reponse = /^w+([.-]?w+)*@w+([.-]?w+)*(.w{2,4})+$/;

mais de toute façon ça ne vaut pas tripette
je peux y balancer n'importe quoi tel que :


--
Stephane Moriaux et son [moins] vieux Mac

Avatar
Serafin

Merci à tous.

Je vais donc faire un premier contrôle js pour alerter le visiteur et un
second en php avant enregistrement dans ma base mysql.

Je m'interroge sur l'opportunité, dans un premier temps tout du moins,
de l'envoi d'un mel pour validation. Pour l'instant, il s'agit de
"fixer" l'internaute écrivant des réponses sur mon bloc notes, par
enregistrement de son adresse ip et de son mel afin d'éviter des
débordements...

http://coatmeur.info

Tout d'abord, sache que tout contrôle que tu peux faire en javascript ne
sert qu'à améliorer la vie de l'utilisateur (en le prévenant au plus tôt
que sa requête ne sera pas acceptée) et surement pas à garantir quoi que
ce soit dans ta base de données : d'abord n'importe qui peut désactiver
javascript, et de plus quiconque ayant des intentions malicieuses peut
faire n'importe quelle requête vers ton serveur.

C'est donc sur le *serveur* qu'il faut faire les contrôles (par exemple
en PHP), et pas sur le client (par exemple en JavaScript). Cela dit,
rien ne t'empêche de faire sur le client le contrôle que tu *referas*
sur le serveur. Par exemple :
/^[.A-Za-z0-9!#$%&'*+/=?^_`{|}~-]+@[.A-Za-z0-9-]+$/

Par ailleurs, le seul contrôle vraiment valable consiste à envoyer un
courriel à l'adresse que l'on t'a fournie, et à n'enregistrer l'adresse
que si tu reçois une réponse à ce courriel (pas un bounce, bien sûr).

En effet, une adresse peut être parfaitement bien formée, voire même
valide, mais ne pas appartenir à la personne qui te l'a envoyée. Si
tu ne veux pas te faire fermer ton compte pour spam, une demande de
confirmation d'inscription (bien évidemment unique) est requise avant
d'enregistrer cette adresse.

Note qu'il y a quelques semaines j'ai fait de longues recherches dans
les RFC et ailleurs (avec questions posées sur fr.comp.lang.php et
fr.comp.mail) afin de mettre à jour la FAQ de fclp. Voici le résultat :
<http://faqfclphp.free.fr/#rub5.3>.

Cordialement,


Avatar
Patrick Mevzek
j'ai trouvé une petite fonction qui a l'air de fonctionner assez bien,
sauf que les extentions à 4 lettres .info par exemple ne marche pas. La
fonction
function controle_mel(id) {
var mail = document.form_blog.mel.value;
var reponse = /^w+([.-]?w+)*@w+([.-]?w+)*(.w{2,3})+$/;


var reponse = /^w+([.-]?w+)*@w+([.-]?w+)*(.w{2,4})+$/;


Pas mieux, marchera pas pour .TRAVEL, .MUSEUM, etc...

mais de toute façon ça ne vaut pas tripette


Je confirme.

--
Patrick Mevzek . . . . . . Dot and Co (Paris, France)
<http://www.dotandco.net/> <http://www.dotandco.com/>
Dépêches sur le nommage <news://news.dotandco.net/dotandco.info.news>


Avatar
Olivier Miakinen

Je vais donc faire un premier contrôle js pour alerter le visiteur et un
second en php avant enregistrement dans ma base mysql.


Ça me semble sage, voire indispensable.

Je m'interroge sur l'opportunité, dans un premier temps tout du moins,
de l'envoi d'un mel pour validation.


Beuah. Voir la FAQ suivante qui exprime bien ce que je pense de « mel »
ou « mél ».

Pour l'instant, il s'agit de
"fixer" l'internaute écrivant des réponses sur mon bloc notes, par
enregistrement de son adresse ip et de son mel afin d'éviter des
débordements...


Dans ce cas, pourquoi lui demander une adresse de courriel ? Demande
plutôt un nom ou un pseudo, parce que si je comprends bien je pourrais
déclarer être sans que tu vérifies quoi que
ce soit.

[ quelques dizaines de lignes citées ]



Merci de supprimer de ta réponse ce à quoi tu ne réponds pas, et de
répondre après ce que tu cites.
Cf. <http://www.usenet-fr.net/fur/usenet/repondre-sur-usenet.html>.


1 2