Reprenant le message Valider email Javascript et PHP , voici une classe de Nice JavaScript capable de vérifier et vérifier les adresses e-mail. Son utilisation est très simple, même si elle est un contrôle côté client, et facile à contourner, vous pouvez simplement désactiver le Javascript (proposer pétition contre cette possibilité
désormais tous les navigateurs permettent d'échapper à JavaScript, puis tous les contrôles associés aux - dans le court terme n'est pas quelque chose sur Internet, voir l'Ajax
).
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 | / * ** @ Nom: ckmail.js ** Description @: vérification de la syntaxe email ** @ Auteur: undo = = ** @ Auteur-Web: http://www.undolog.com ** @ Auteur-mail: @ g.fazioli undolog.com - g (dot) Fazioli (at) undolog (dot) com ** @ Date: 21/09/2006 21:24 ** @ Ver: 1.0 * / { oCKMail = {var , __release: «1.0», , __filter: / ^ (.. [\ w-]+(?: \ [\ w-]+)*)@((?:[ \ w-] + \) * \ w [\ w-] {0, 66}) \ ([az] {2,6} (:.?. \ [AZ] {2 })?)$/ i, , __username: "", , __domain: "", , __ext: "", / / A FAIRE ( e ) { GetUserName: function (e) { this .__init ( e ) ) return ( this .__username ) ; if (this. __init (e)) return (__username this.); false ) ; retour (false); }, / / A FAIRE ( e ) { GetDomain: function (e) { this .__init ( e ) ) return ( this .__domain ) ; if (this. __init (e)) return (this. __domain); false ) ; retour (false); }, / / A FAIRE ( e ) { GetExtension: function (e) { this .__init ( e ) ) return ( this .__ext ) ; if (this. __init (e)) return (this. __ext); false ) ; retour (false); }, / / A FAIRE ( e ) { __init: function (e) { ! this .__filter. test ( e ) ) return ( false ) ; si le retour (faux) (ce test __filter (e)!..); e. split ( "@" ) ; e. var t = split ("@"); t [ 0 ] ; ce __username t = [0].; t [ 1 ] ; ce __domain = t [1].; .__domain. split ( "." ) ; t = présent. __domain. diviser ("."); t [ 1 ] ; ce __ext = t [1].; true ) ; retour (true); }, / / A FAIRE / / Synopsis / / Vérifier (et extlist, domainlist); / / Exécute une série de contrôles standard d'un e-mail. / / Extlist - Vous pouvez passer un second paramètre optionnel qui correspond à un tableau d'extensions qui / / Est-autorisés ou exclus (inclure / exclure l'extension) selon la première valeur dans le tableau, tous les / / Erreur d'autres seront considérés. / / EG. [C'est vrai, "fr", "com"] pass (inclut la liste) / / EG. [Faux, "fr", "com"] ne passe pas (exclure la liste) / / Si -1 n'est pas pris en compte / / DomainList - Vous pouvez passer un troisième paramètre optionnel qui correspond à un tableau des domaines qui / / Est-autorisés ou exclus (inclure / exclure du domaine) en fonction de la première valeur dans le tableau, tous les / / Erreur d'autres seront considérés. / / EG. [C'est vrai, "alice.it", "mac.com"] pass (inclut la liste) / / EG. [Faux, "alice.it", "mac.com"] ne passe pas (exclure la liste) / / Si -1 n'est pas pris en compte / / ( e ) { vérifier: function (e) { this .__init ( e ) ) { if (this. __init (e)) { / / Check Check domainExt array arguments. length > 1 ) { if (longueur arguments.> 1) { typeof ( arguments [ 1 ] ) == "object" ) { if (typeof (arguments [1]) == "object") { arguments [ 1 ] [ 0 ] ) { // include list if (arguments [1] [0]) {/ / inclure la liste var i = 0 ; i < arguments [ 1 ] . length ; i ++ ) { for (var i = 0; i <arguments [1] de longueur;. i + +) { this .__ext == arguments [ 1 ] [ i ] . toLowerCase ( ) ) return ( true ) ; if (this. __ext == arguments [1] [i] toLowerCase ().) return (true); } { // exclude list Else {} / / liste d'exclusion var i = 0 ; i < arguments [ 1 ] . length ; i ++ ) { for (var i = 0; i <arguments [1] de longueur;. i + +) { this .__ext == arguments [ 1 ] [ i ] . toLowerCase ( ) ) return ( false ) ; if (this. __ext == arguments [1] [i] toLowerCase ().) return (false); } true ) ; retour (true); } false ) ; retour (false); } } / / Check Check domainName array arguments. length > 2 ) { if (arguments. longueur> 2) { typeof ( arguments [ 2 ] ) == "object" ) { if (typeof (arguments [2]) == "object") { arguments [ 2 ] [ 0 ] ) { // include list if (arguments [2] [0]) {/ / inclure la liste var i = 1 ; i < arguments [ 2 ] . length ; i ++ ) { for (var i = 1, i <arguments [2] de longueur;. i + +) { this .__domain == arguments [ 2 ] [ i ] . toLowerCase ( ) ) return ( true ) ; if (this. __domain == arguments [2] [i] toLowerCase ().) return (true); } { // exclude list Else {} / / liste d'exclusion var i = 1 ; i < arguments [ 2 ] . length ; i ++ ) { for (var i = 1, i <arguments [2] de longueur;. i + +) { this .__domain == arguments [ 2 ] [ i ] . toLowerCase ( ) ) return ( false ) ; if (this. __domain == arguments [2] [i] toLowerCase ().) return (false); } true ) ; retour (true); } false ) ; retour (false); } } true ) ; // email correct retour (true) / / email correcte } false ) ; // error retour (false) / / erreur } }; |
L'objet oCKMail fournit plusieurs méthodes pour réaliser une série parallèle de contrôles sur l'adresse, telles que l'extension, domaine, etc ...
Pour être vraiment sûr si vous avez PHP, vous pouvez ajouter une commande supplémentaire et efficace avant d'exécuter la commande mail() . Voici la classe PHP utile à cette fin:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 | / * ** @ Nom: cckmail.php ** Description @: vérification de la syntaxe email ** @ Auteur: undo = = ** @ Auteur-Web: http://www.undolog.com ** @ Auteur-mail: @ g.fazioli undolog.com - g (dot) Fazioli (at) undolog (dot) com ** @ Date: 21/09/2006 23:58 ** @ Ver: 1.0 ** ** Exemples ** ** / / Vérifier une adresse EXCLUANT le domaine e-mail "e-lementi.com" et "mac.com" ** ** $ OCKMail CCKMail = new (); ** $ OCKMail-> check ($ email, null, array (false, "e-lementi.com", "mac.com")); ** ** / / Vérifier l'adresse, y compris e-mail de domaine "e-lementi.com" et "mac.com" ** ** $ OCKMail CCKMail = new (); ** $ OCKMail-> check ($ email, null, array (true, "e-lementi.com", "mac.com")); ** ** / / Vérifier une adresse HORS ces e-mails avec un "net", "fr", "org" ** ** $ OCKMail CCKMail = new (); ** $ OCKMail-> check ($ email, array (false, "net", "fr", "org")); ** ** HISTOIRE / Change Log ** * / ! function_exists ( 'checkdnsrr' ) ) { if ( function_exists ('checkdnsrr')) { ( $host , $type = '' ) { Fonction checkdnsrr ($ host, $ type ='') { ! empty ( $host ) ) { if ( vide ($ host)) { $type == '' ) $type = "MX" ; if ($ type =='') $ type = "MX"; ( "nslookup -type= $type $host " , $output ) ; @ exec ("nslookup-type = $ type $ host", $ output); list ( $k , $line ) = each ( $output ) ) { while ( liste (k $, $ line) = Chaque ($ output)) { eregi ( "^ $host " , $line ) ) { if ( eregi ("^ $ host", $ ligne)) { ; return true; } } ; return false; } } } / / {CCKMail classe = "1.1" ; var $ __release = "1.1"; = false ; var $ status = false; ; var $ username; ; var $ domaine; ; var $ ext; / / Fonction CCKMail () {} / / $e ) { Fonction _test ($ s) { status = false ; $ This -> statut = false; '/^.+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$/' ; $ P ='/^.+ \ @ (\ [?) [A-zA-Z0-9 \ - \] + \ ([a-zA-Z] {2,4} |.. [0-9] {1,3}) (\ ]?)$/'; preg_match ( $p , $e ) ) ) { if (( preg_match ($ p, $ e))) { explode ( "@" , $e ) ; $ T = explosent ("@", $ s); username = strtolower ( $t [ 0 ] ) ; $ This -> username = strtolower ($ t [0]); domain = strtolower ( $t [ 1 ] ) ; $ This -> domain = strtolower ($ t [1]); explode ( "." , $this -> domain ) ; $ T = explosent ('.', $ this - domaine>); ext = strtolower ( $t [ 1 ] ) ; $ This -> ext = strtolower ($ t [1]); / / checkdnsrr ( $this -> domain . '.' , 'MX' ) ) $this -> status = true ; if ( checkdnsrr ($ this -> Domaine ..'', 'MX')) $ this -> statut = true; checkdnsrr ( $this -> domain . '.' , 'A' ) ) $this -> status = true ; if ( checkdnsrr ($ this -> Domaine ..'', 'A')) $ this -> status = true; checkdnsrr ( $this -> domain . '.' , 'CNAME' ) ) $this -> status = true ; if ( checkdnsrr ($ this -> Domaine ..'', 'CNAME')) $ this -> statut = true; } } / / $m , $e = NULL , $d = NULL ) { vérifier le fonctionnement ($ m, $ e = NULL, $ d = NULL) { _test ( $m ) ; $ This -> _test (M $); $this -> status ) { if ($ this -> statut) { / / Check Check domainExt array ! is_null ( $e ) ) { if ( is_null ($ e)) { $e [ 0 ] ) { // include list if ($ e [0]) {/ / inclure la liste $i = 1 ; $i < sizeof ( $e ) ; $i ++ ) { for ($ i = 1; $ i < sizeof ($ s); $ i + +) { $this -> ext == strtolower ( $e [ $i ] ) ) return ( true ) ; if ($ this -> ext == strtolower ($ e [$ i])) return (true); } { // exclude list Else {} / / liste d'exclusion $i = 1 ; $i < sizeof ( $e ) ; $i ++ ) { for ($ i = 1; $ i < sizeof ($ s); $ i + +) { $this -> ext == strtolower ( $e [ $i ] ) ) return ( false ) ; if ($ this -> ext == strtolower ($ e [$ i])) return (false); } true ) ; retour (true); } false ) ; retour (false); } / / Check Check domainName array ! is_null ( $d ) ) { if ( is_null ($ d)) { $d [ 0 ] ) { // include list if ($ d [0]) {/ / inclure la liste $i = 1 ; $i < sizeof ( $d ) ; $i ++ ) { for ($ i = 1; $ i < sizeof ($ d); $ i + +) { $this -> domain == strtolower ( $d [ $i ] ) ) return ( true ) ; if ($ this -> de domaine == strtolower ($ d [$ i])) return (true); } { // exclude list Else {} / / liste d'exclusion $i = 1 ; $i < sizeof ( $d ) ; $i ++ ) { for ($ i = 1; $ i < sizeof ($ d); $ i + +) { $this -> domain == strtolower ( $d [ $i ] ) ) return ( false ) ; if ($ this -> de domaine == strtolower ($ d [$ i])) return (false); } true ) ; retour (true); } false ) ; retour (false); } true ) ; retour (true); } false ) ; retour (false); } } ?> |
Qu'est-ce ineteressante est la capacité de cette classe pour se connecter aux serveurs MX (voir checkdnsrr() ) pour vérifier la présence du domaine. Ainsi, en plus d'effectuer une vérification de la syntaxe de l'e-mail fonctionne un domaine de ping réel avant. Nous pouvons dire que cette méthode est de 80% ...










[...] Vous pouvez également entrer un contrôle supplémentaire sur le côté serveur / php. Voir dans les classes ce qui concerne la présente Javascript et PHP pour valider e-mail un'indirizzo TEXTE CLAIR [...]