diff --git a/plugin.xml b/plugin.xml index d2eba7fc737d908d2ac0c70e1bfab6162428a183..8392ed29b70dc3d1f8725cb3d229b136f0f05e40 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 5a03d039847dbbe44c12169b928e01d750574187..e1d39e507f314d1367c50ca0492ad90cfbe9e776 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 ab630eef78263a22ecf56e5375e0981491944e37..ed6ce377d9f9004022d79a046a581af68237a664 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 bb7c847a752c2bfb98cd836df4a687ecea86a00e..a34556cc78c124183414972206a51d4992d358a5 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'); }