From 144b4d28ddb227b30521d5a96b13efee32e2af08 Mon Sep 17 00:00:00 2001 From: "xdjuj@apsulis.com" <> Date: Mon, 12 Apr 2010 12:16:41 +0000 Subject: [PATCH] =?UTF-8?q?-=20Uniformiser=20les=20verifs=20de=20mail=20-?= =?UTF-8?q?=20Cat=C3=A9goriser=20pour=20la=20Zone=20-=20Corriger=20la=20do?= =?UTF-8?q?c?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- plugin.xml | 3 ++- test/verifier.html | 14 ++++++------ verifier/email.php | 48 ++++++++++++++++++++++++++++++++++----- verifier/email_strict.php | 30 +++++------------------- 4 files changed, 57 insertions(+), 38 deletions(-) diff --git a/plugin.xml b/plugin.xml index d2eba7f..8392ed2 100644 --- a/plugin.xml +++ b/plugin.xml @@ -9,6 +9,7 @@ <prefix>verifier</prefix> <options>verifier_options.php</options> <necessite id="SPIP" version="[2.0.10;]" /> - <utilise id="yaml" /> + <utilise id="yaml" /> + <categorie>outil</categorie> </plugin> diff --git a/test/verifier.html b/test/verifier.html index 5a03d03..e1d39e5 100644 --- a/test/verifier.html +++ b/test/verifier.html @@ -84,11 +84,11 @@ echo "Valide SPIP : $email3 ?"; var_dump($verifier($email3, 'email')); echo "Valide Strict : $email ?"; -var_dump($verifier($email, 'email_strict')); +var_dump($verifier($email, 'email',array('mode'=>'strict'))); echo "Valide Strict : $email2 ?"; -var_dump($verifier($email2, 'email_strict')); +var_dump($verifier($email2, 'email',array('mode'=>'strict'))); echo "Valide Strict : $email3 ?"; -var_dump($verifier($email3, 'email_strict')); +var_dump($verifier($email3, 'email',array('mode'=>'strict'))); ?> @@ -124,14 +124,14 @@ $siret_valide = "32122785200019"; $siret_non_valide = "32122785200033"; echo "SIREN : $siren_valide ?"; -var_dump($verifier($siren_valide, 'siren')); +var_dump($verifier($siren_valide, 'siren_siret')); echo "SIREN : $siren_non_valide ?"; -var_dump($verifier($siren_non_valide, 'siren')); +var_dump($verifier($siren_non_valide, 'siren_siret')); echo "SIRET : $siret_valide ?"; -var_dump($verifier($siret_valide, 'siret')); +var_dump($verifier($siret_valide, 'siren_siret',array('mode'=>'siret'))); echo "SIRET : $siret_non_valide ?"; -var_dump($verifier($siret_non_valide, 'siret')); +var_dump($verifier($siret_non_valide, 'siren_siret',array('mode'=>'siret'))); ?> </pre> diff --git a/verifier/email.php b/verifier/email.php index ab630ee..ed6ce37 100644 --- a/verifier/email.php +++ b/verifier/email.php @@ -9,10 +9,46 @@ if (!defined("_ECRIRE_INC_VERSION")) return; function verifier_email_dist($valeur, $options=array()){ include_spip('inc/filtres'); - if (email_valide($valeur)) - return ''; - else - return _T('verifier:erreur_email'); -} + if (!$options['mode'] or !in_array($options['mode'], array('strict'))){ + $mode = 'normal'; + } + else{ + $mode = $options['mode']; + } + + if ($mode == 'normal'){ + if (email_valide($valeur)) + return ''; + else + return _T('verifier:erreur_email'); + } + + // Validation Stricte + /** + * Changement de la RegExp d'origine + * Non respect des RFC beaucoup trop souples à mon sens + * On INTERDIT les mails dont les domaines ne sont pas "valides" + * On INTERDIT les adresses qui comportent autre chose que des tirets / tirets bas / point + * (même si les autres caractères sont autorisés, tant pis, ils sont trop rares) + */ + else{ + $erreur = _T('verifier:erreur_email'); + $ok = ''; -?> + // Si c'est un spammeur autant arreter tout de suite + if (preg_match(",[\n\r].*(MIME|multipart|Content-),i", $valeur)) { + spip_log("Tentative d'injection de mail : $valeur"); + return $erreur; + } + foreach (explode(',', $valeur) as $v) { + // nettoyer certains formats + // "Marie Toto <Marie@toto.com>" + $adresse = trim(preg_replace(",^[^<>\"]*<([^<>\"]+)>$,i", "\\1", $v)); + // NOUVELLE REGEXP NE RESPECTANT PLUS RFC 822 MAIS MOINS TOLERANTE + if (!preg_match('/^([A-Za-z0-9]){1}([A-Za-z0-9]|-|_|\.)*@[A-Za-z0-9]([A-Za-z0-9]|-|\.){1,}\.[A-Za-z]{2,4}$/', $adresse)) + return $erreur; + } + return $ok; + } + return ''; +} diff --git a/verifier/email_strict.php b/verifier/email_strict.php index bb7c847..a34556c 100644 --- a/verifier/email_strict.php +++ b/verifier/email_strict.php @@ -2,30 +2,12 @@ // Sécurité if (!defined("_ECRIRE_INC_VERSION")) return; - -/** - * Changement de la RegExp d'origine - * Non respect des RFC beaucoup trop souples à mon sens - * On INTERDIT les mails dont les domaines ne sont pas "valides" - * On INTERDIT les adresses qui comportent autre chose que des tirets / tirets bas / point - * (même si les autres caractères sont autorisés, tant pis, ils sont trop rares) +/* + * OBSOLETE : remplacé par $verifier($valeur, 'email',array('mode'=>'strict')) + * Assurer la compatibilité un temps */ function verifier_email_strict_dist($valeur, $options=array()){ - $erreur = _T('verifier:erreur_email'); - $ok = ''; - - // Si c'est un spammeur autant arreter tout de suite - if (preg_match(",[\n\r].*(MIME|multipart|Content-),i", $valeur)) { - spip_log("Tentative d'injection de mail : $valeur"); - return $erreur; - } - foreach (explode(',', $valeur) as $v) { - // nettoyer certains formats - // "Marie Toto <Marie@toto.com>" - $adresse = trim(preg_replace(",^[^<>\"]*<([^<>\"]+)>$,i", "\\1", $v)); - // NOUVELLE REGEXP NE RESPECTANT PLUS RFC 822 MAIS MOINS TOLERANTE - if (!preg_match('/^([A-Za-z0-9]){1}([A-Za-z0-9]|-|_|\.)*@[A-Za-z0-9]([A-Za-z0-9]|-|\.){1,}\.[A-Za-z]{2,4}$/', $adresse)) - return $erreur; - } - return $ok; + $verifier = charger_fonction('verifier','inc'); + if(!$verifier($valeur, 'email',array('mode'=>'strict'))) return false; + else return _T('verifier:erreur_email'); } -- GitLab