From cdd1840217cb4fdff70b376eecd1a6b3b429fb28 Mon Sep 17 00:00:00 2001 From: m Date: Sun, 1 Apr 2018 19:29:32 +0200 Subject: [PATCH] =?UTF-8?q?correction=20:=20filtre=20adresse=20e-mail=20av?= =?UTF-8?q?ec=20nom=20de=20domaine=20internationalis=C3=A9=20https://frama?= =?UTF-8?q?git.org/framasoft/framadate/issues/233?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Framadate/Services/InputService.php | 40 ++++++++++++++++++- 1 file changed, 39 insertions(+), 1 deletion(-) diff --git a/app/classes/Framadate/Services/InputService.php b/app/classes/Framadate/Services/InputService.php index 2c5e1da..32283b1 100644 --- a/app/classes/Framadate/Services/InputService.php +++ b/app/classes/Framadate/Services/InputService.php @@ -65,7 +65,45 @@ class InputService { } public function filterMail($mail) { - return filter_var($mail, FILTER_VALIDATE_EMAIL); + + $mail = mb_strtolower(trim($mail)); + + + $decoupage = explode("@", $mail, 2); + + $resultat = FALSE; + + + if (isset($decoupage[1])) { + + $domaine = idn_to_ascii( + $decoupage[1] + , IDNA_DEFAULT + , INTL_IDNA_VARIANT_UTS46 + ); + + $adresseConvertie = "{$decoupage[0]}@$domaine"; + + $adresseFiltree = filter_var( + $adresseConvertie + , FILTER_VALIDATE_EMAIL + , ["flags" => FILTER_FLAG_EMAIL_UNICODE] // permet d'utiliser des accents avant le @ + ); + + if ($adresseConvertie === $adresseFiltree) { + + $testMX = getmxrr($domaine, $_); // tester sur le domaine indique un serveur MX + + if ($testMX) { + $resultat = $mail; + } + + } + + } + + + return $resultat; } public function filterDescription($description) {