mot de passe oublié

salut

en spip 3.1.6
je rencontre cette difficulté :
des adresses mail sous la forme
c’est à dire des adresses comprenant caractères point caracteres tiret caracteres arobase domaine sont systématiquement refusés par le formulaire mot de passe oublié avec le message d’errreur alors que les e-mails sont bien attribués à des visiteurs du site où donc dois-je chercher pour résoudre cette erreur ? cordialement

dans le fichier ecrire/inc/filtre.php, il y a le filtre email_valide() à la ligne 3340 qui comprend ce test // RFC 822 if (!preg_match(’#^[^()<>@,;:\"/[:space:]]+(@([-_0-9a-z]+.)*[-_0-9a-z]+)$#i’, $adresse)) un tester d’expression régulière me dit : qu’en pensent les spécialistes ?

jplgbokfehcmceil.png

au delà de la curiosité décrite ci-dessus, (les implémentations de regex peuvent varier sur des détails de la sorte) j’ai résolu la difficulté que j’ai rencontré : quand on utilise cette fonction « mot de passe oublié » il faut obligatoirement que le compte soit valide (qu’il ne soit pas à la poubelle) mais aussi qu’il comprenne déjà un mot de passe sinon, la fonction refuse d’envoyer le mail avec le ticket

jplgbokfehcmceil.png

Pour l’anecdote, il n’y a pas d’erreur dans l’expression régulière.

Dans le test ci-dessous, le “/” est aussi le délimiteur choisi pour l’expression.jplgbokfehcmceil.png

Alors que dans l’instruction PHP d’origine :
if (!preg_match(‹ #[1]+(@([-_0-9a-z]+.)*[-_0-9a-z]+)$#i ›, $adresse))

ce sont des “#”, donc pas de problème.

From: gornety
Sent: Monday, October 09, 2017 7:24 PM
To: spip@rezo.net
Subject: Re: [Spip] mot de passe oublié (resolu)

Le 09/10/2017 à 18:11, gornety a écrit :

Le 09/10/2017 à 16:58, gornety a écrit :

salut

en spip 3.1.6
je rencontre cette difficulté :
des adresses mail sous la forme
xx.xxxx-xxx@xxx.fr
c’est à dire des adresses comprenant
caractères point caracteres tiret caracteres arobase domaine
sont systématiquement refusés par le formulaire mot de passe oublié
avec le message d’errreur
Il y a 1 erreur dans votre saisie, veuillez vérifier les informations.

alors que les e-mails sont bien attribués à des visiteurs du site

où donc dois-je chercher pour résoudre cette erreur ?

cordialement

-- 
Yanic Gornet - 06 08 60 46 81

dans le fichier ecrire/inc/filtre.php, il y a le filtre email_valide() à la ligne 3340
qui comprend ce test

// RFC 822
if (!preg_match(‹ #[2]+(@([-_0-9a-z]+.)*[-_0-9a-z]+)$#i ›, $adresse))

un tester d’expression régulière me dit :

qu’en pensent les spécialistes ?

au delà de la curiosité décrite ci-dessus,
(les implémentations de regex peuvent varier sur des détails de la sorte)
j’ai résolu la difficulté que j’ai rencontré :

quand on utilise cette fonction « mot de passe oublié »
il faut obligatoirement que le compte soit valide (qu’il ne soit pas à la poubelle)
mais aussi qu’il comprenne déjà un mot de passe
sinon, la fonction refuse d’envoyer le mail avec le ticket

-- 
Yanic Gornet - 06 08 60 46 81


liste spip
spip@rezo.net - désabonnement : envoyer un mail à spip-off@rezo.net

Archives : https://www.mail-archive.com/spip@rezo.net/maillist.html

Infos : http://listes.rezo.net/mailman/listinfo/spip

Documentation de SPIP : http://www.spip.net/

Irc : de l’aide à toute heure : http://spip.net/irc


  1. ^()<>@,;:\"/[:space:] ↩︎

  2. ^()<>@,;:\"/[:space:] ↩︎

Bonjour,

l'expression régulière de base est :
#^[^()<>@,;:\\"/[:space:]]+(@([-_0-9a-z]+\.)*[-_0-9a-z]+)$#i

Par conséquent, le délimiteur n'est pas /, mais # . Du coup un / sans \ devant est parfaitement valide dans ce cas.

Ex : #^[0-9/]+$# est valide, mais pas /^[0-9/]+$/ qui devra être /^[0-9\/]+$/

Pour le reste, le premier segment est :
^[^()<>@,;:\\"/[:space:]]+
ce qui veut dire :
"quelque chose qui commence par une série de 1à n caractères qui ne sont pas ()<>@,;:\\" ou un espace. Donc . et - n'étant pas dans la liste, ça doit passer sans soucis ...

Pour la partie de droite, ça dit un truc du genre :
@
entre 0 et n fois le groupe suivant (
des caractères parmi -_0-9a-z de 1à n fois,
suivi de .
)
suivi de caractères parmi -_0-9a-z entre 1 et n fois
"et plus rien derrière"
"le tout n'est pas sensible à la casse".

Voila voila ...