X-Git-Url: http://git.cyclocoop.org/%40url%40?a=blobdiff_plain;f=www%2Fplugins%2Fauto%2Fverifier%2Fverifier%2Femail.php;fp=www%2Fplugins%2Fauto%2Fverifier%2Fverifier%2Femail.php;h=6809d31a5feab324f9b09a9454653762ef2d368d;hb=80b4d3e85f78d402ed2e73f8f5d1bf4c19962eed;hp=0000000000000000000000000000000000000000;hpb=aaf970bf4cdaf76689ecc10609048e18d073820c;p=velocampus%2Fweb%2Fwww.git diff --git a/www/plugins/auto/verifier/verifier/email.php b/www/plugins/auto/verifier/verifier/email.php new file mode 100644 index 0000000..6809d31 --- /dev/null +++ b/www/plugins/auto/verifier/verifier/email.php @@ -0,0 +1,110 @@ + echapper_tags($valeur))); + } + + // Choix du mode de verification de la syntaxe des courriels + if (!$options['mode'] or !in_array($options['mode'], array('normal','rfc5322','strict'))){ + $mode = 'normal'; + } + else{ + $mode = $options['mode']; + } + + $fonctions_disponibles = array('normal' => 'email_valide', 'rfc5322' => 'verifier_email_rfc5322', 'strict' => 'verifier_email_de_maniere_stricte'); + $fonction_verif = $fonctions_disponibles[$mode]; + + if (!$fonction_verif($valeur)) + return _T('verifier:erreur_email', array('email' => echapper_tags($valeur))); + else + return ''; +} + +/** + * Changement de la RegExp d'origine + * + * Respect de la RFC5322 + * + * @link (phraseur détaillé ici : http://www.dominicsayers.com/isemail/) + * @param string $valeur La valeur à vérifier + * @return boolean Retourne true uniquement lorsque le mail est valide + */ +function verifier_email_rfc5322($valeur){ + // 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 false; + } + include_spip('inc/is_email'); + foreach (explode(',', $valeur) as $adresse) { + if (!is_email(trim($adresse))) + return false; + } + return true; +} + +/** + * Version basique du contrôle des mails + * + * Cette version impose des restrictions supplémentaires + * qui sont souvent utilisées pour des raison de simplification des adresses + * (ex. comptes utilisateurs lisibles, etc..) + * + * @param string $valeur La valeur à vérifier + * @return boolean Retourne true uniquement lorsque le mail est valide + */ +function verifier_email_de_maniere_stricte($valeur){ + // 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 false; + } + foreach (explode(',', $valeur) as $adresse) { + // nettoyer certains formats + // "Marie Toto " + $adresse = trim(preg_replace(",^[^<>\"]*<([^<>\"]+)>$,i", "\\1", $v)); + 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 false; + } + return true; +} + +/** + * Vérifier que le courriel à tester n'est pas + * déjà utilisé dans la table spip_auteurs + * + * @param string $valeur La valeur à vérifier + * @return boolean Retourne false lorsque le mail est déjà utilisé + */ +function verifier_disponibilite_email($valeur,$exclure_id_auteur=null){ + include_spip('base/abstract_sql'); + + if(sql_getfetsel('id_auteur', 'spip_auteurs', 'email='.sql_quote($valeur).(!is_null($exclure_id_auteur)?"AND statut<>'5poubelle' AND id_auteur<>".intval($exclure_id_auteur):''))) + return false; + else + return true; +}