[spip-dev] bug dans le filtre |email_valide

Gilles VINCENT écrivit

Bonjour,

l'expression régulière n'est pas bonne.
Elle laisse passer 'gilles@sdfsdfsdf'
(sous PHP 5.2.13)

Oula c'est vraiment trop grave.

Je suggère qu'on adopte une fonction qui valide vraiment les mails :

La seule façon de valider vraiment les mails et vérifier l'existence
d'une adresse de courrier électronique c'est d'envoyer un courrier
avec demande de confirmation.

Dominic Sayers arrive à 100% de résultats positifs

Baratin. La fiabilité d'un test d'email ou de diabète s'exprime en faux
positifs et faux négatifs, pas en pourcentage de résultats positifs
d'un nombre limité de tests..

sur la base de la rfc5322
(mise à jour de la rfc822 et rfc2822)
(grammaire ici :
The BNF from RFC 5322 defining parts of a valid internet message address)
Explications + test comparatif des phraseurs :
is_email by dominicsayers
Code PHP du validateur + tests :
Google Code Archive - Long-term storage for Google Code Project Hosting.

D'après Dominic Sayers lui même, dans
is_email by dominicsayers section « Test cases I disagree with »
(bon sang il peut pas ajouter un repère html dans la page ?!!),
il y a cinq, heu non trois cas que son testeur bip mais que d'autres
personnes considèrent comme des adresses valides, ce qui suggère
fortement des faux positifs.

Qu'en dites-vous ?

Voir ci-dessus et
http://trac.rezo.net/trac/spip/ticket/1788
http://www.bortzmeyer.org/arreter-d-interdire-des-adresses-legales.html
et comparer la taille de Google Code Archive - Long-term storage for Google Code Project Hosting.
avec celle de http://trac.rezo.net/trac/spip/browser/spip/ecrire/inc/filtres.php?rev=15660#email_valide

2010/5/2 Nicolas Krebs <nicolas1.krebs2@netcourrier.com>

Je suggère qu’on adopte une fonction qui valide vraiment les mails :

La seule façon de valider vraiment les mails et vérifier l’existence
d’une adresse de courrier électronique c’est d’envoyer un courrier
avec demande de confirmation.

Je ne fais référence qu’à la syntaxe. Je ne dis absolument pas que c’est la méthode à utiliser pour vérifier son existence.

Dominic Sayers arrive à 100% de résultats positifs

Baratin. La fiabilité d’un test d’email ou de diabète s’exprime en faux
positifs et faux négatifs, pas en pourcentage de résultats positifs
d’un nombre limité de tests…

ok, je corrige donc : 0 faux positifs et 0 faux négatifs sur les 229 tests qu’il compare avec les autres validateurs

sur la base de la rfc5322
(mise à jour de la rfc822 et rfc2822)
(grammaire ici :
http://www.dominicsayers.com/isemail/isemail/RFC5322BNF.html)
Explications + test comparatif des phraseurs :

http://www.dominicsayers.com/isemail/

Code PHP du validateur + tests :

http://code.google.com/p/isemail/source/browse/trunk

D’après Dominic Sayers lui même, dans
http://www.dominicsayers.com/isemail/ section « Test cases I disagree with »
(bon sang il peut pas ajouter un repère html dans la page ?!!),
il y a cinq, heu non trois cas que son testeur bip mais que d’autres
personnes considèrent comme des adresses valides, ce qui suggère
fortement des faux positifs.

Certes mais côté SPIP, ça donne à peu prêt 75 faux négatifs et 35 faux positifs.
http://trac.rezo.net/trac/spip/ticket/1788 n’indique-t-il pas qu’il ne faut pas de faux négatif ?

les tests :
http://localhost:8888/spip-2.1/tests/z_todo/email_valide_5322.php?mode=test_general

Qu’en dites-vous ?

Voir ci-dessus et
http://trac.rezo.net/trac/spip/ticket/1788

http://www.bortzmeyer.org/arreter-d-interdire-des-adresses-legales.html

et comparer la taille de http://code.google.com/p/isemail/source/browse/trunk/is_email.php
avec celle de http://trac.rezo.net/trac/spip/browser/spip/ecrire/inc/filtres.php?rev=15660#email_valide

C’est bien pour cela que j’ai également proposé d’adopter un compromis :

  • un plugin pour ceux qui veulent valider les mails selon la rfc strict : simplement en intégrant is_email.php
  • quelques adaptations pour que SPIP ait moins de faux négatifs, au moins pour les plus simples.

ex. :
first.last@[12.34.56.78]
first.last@[IPv6:1111:2222:3333::4444:12.34.56.78]
« test.test »@example.com
customer/department=shipping@example.com
first.( middle )last@example.com
HM2Kinsists@(that comments are allowed)this.is.ok

par exemple (pour les faux négatifs actuels).

.Gilles

Sinon il existe également des versions “plus simples” à base d’expressions régulières :
je viens de tomber sur http://squiloople.com/2009/12/20/email-address-validation/
qui ne me semble pas trop mal.

Il est modulable : on peut activer ou pas certaines fonctionnalités, comme celle d’autoriser ou non les noms de domaine simple :wink:

.Gilles

2010/5/3 Gilles VINCENT <gilles.vincent@gmail.com>

Ciao

Je rebondis sur la discution suite à un lien vu via twitter :
http://fightingforalostcause.net/misc/2006/compare-email-regex.php

Cela est peut etre un compromis pour la regexp minimale ?

Km

Je rebondis sur la discution suite à un lien vu via twitter :
Comparing E-mail Address Validating Regular Expressions
Cela est peut etre un compromis pour la regexp minimale ?

oui

-- x.com

* Fil tapuscrivait, le 02/06/2010 21:21:

Je rebondis sur la discution suite à un lien vu via twitter :
Comparing E-mail Address Validating Regular Expressions
Cela est peut etre un compromis pour la regexp minimale ?

oui

-- x.com

Sympa comme nouvel email :wink:

-- x.com