Les Snippets

Connexion

contrôle d'adresse email suivant version php4 php5

Niveau requis pour utiliser/comprendre cette source : 2 ( Initié )
Créé le 21/04/2011 21:41:41 et initié par cod57 [Liste]
Vue : 2371
Catégorie(s) : Sécurité, Chaîne de caractères, Email & Messagerie, WebForm, Control, WebControl, Regex
Langages dispo pour ce code :
- PHP 4, PHP 5



Langage : PHP 4 , PHP 5
Date ajout : 21/04/2011
Posté par cod57 [Liste]

<?php
function testRegex($this){
if(!preg_match(
      '/^(?!(?:(?:\x22?\x5C[\x00-\x7E]\x22?)|(?:\x22?[^\x5C\x22]\x22?)){255,})(?!(?:(?:\x22?\x5C[\x00-\x7E]\x22?)|(?:\x22?[^\x5C\x22]\x22?)){65,}@)(?:(?:[\x21\x23-\x27\x2A\x2B\x2D\x2F-\x39\x3D\x3F\x5E-\x7E]+)|(?:\x22(?:[\x01-\x08\x0B\x0C\x0E-\x1F\x21\x23-\x5B\x5D-\x7F]|(?:\x5C[\x00-\x7F]))*\x22))(?:\.(?:(?:[\x21\x23-\x27\x2A\x2B\x2D\x2F-\x39\x3D\x3F\x5E-\x7E]+)|(?:\x22(?:[\x01-\x08\x0B\x0C\x0E-\x1F\x21\x23-\x5B\x5D-\x7F]|(?:\x5C[\x00-\x7F]))*\x22)))*@(?:(?:(?!.*[^.]{64,})(?:(?:(?:xn--)?[a-z0-9]+(?:-[a-z0-9]+)*\.){1,126}){1,}(?:(?:[a-z][a-z0-9]*)|(?:(?:xn--)[a-z0-9]+))(?:-[a-z0-9]+)*)|(?:\[(?:(?:IPv6:(?:(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){7})|(?:(?!(?:.*[a-f0-9][:\]]){7,})(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,5})?::(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,5})?)))|(?:(?:IPv6:(?:(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){5}:)|(?:(?!(?:.*[a-f0-9]:){5,})(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,3})?::(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,3}:)?)))?(?:(?:25[0-5])|(?:2[0-4][0-9])|(?:1[0-9]{2})|(?:[1-9]?[0-9]))(?:\.(?:(?:25[0-5])|(?:2[0-4][0-9])|(?:1[0-9]{2})|(?:[1-9]?[0-9]))){3}))\]))$/iD'
      , $this)){
      return false;
      }else{
      return true;
      }

}

function verifMail($mail){
$mail=strtolower($mail);
$mail=str_replace("\"","",$mail);
If (strlen($mail)>50){
return false;
}

/*extraction du suffixe*/
$ok = ereg("^(.+)\.(.+)$", $mail, $items);
if($ok){
$sans_suffixe=$items[1] ; 
$suffixe=$items[2];
//echo "Le nom de fichier '$mail' se compose de <b>$sans_suffixe</b> et de l'extension <b>$suffixe</b><br>" ;
}else{
exit('fake');
}

$ext =array('com','fr','net','org','eu');

if(!in_array($suffixe,$ext,true)){
return false;
}

$version=(double)substr(phpversion(),0,3);

    if($version>=5.2){
    
      if(!filter_var($mail, FILTER_VALIDATE_EMAIL)){
      return false;
      //echo 'Erreur : Votre email n\'est pas valide.';
    
      }else if(!preg_match(
      '/^(?!(?:(?:\x22?\x5C[\x00-\x7E]\x22?)|(?:\x22?[^\x5C\x22]\x22?)){255,})(?!(?:(?:\x22?\x5C[\x00-\x7E]\x22?)|(?:\x22?[^\x5C\x22]\x22?)){65,}@)(?:(?:[\x21\x23-\x27\x2A\x2B\x2D\x2F-\x39\x3D\x3F\x5E-\x7E]+)|(?:\x22(?:[\x01-\x08\x0B\x0C\x0E-\x1F\x21\x23-\x5B\x5D-\x7F]|(?:\x5C[\x00-\x7F]))*\x22))(?:\.(?:(?:[\x21\x23-\x27\x2A\x2B\x2D\x2F-\x39\x3D\x3F\x5E-\x7E]+)|(?:\x22(?:[\x01-\x08\x0B\x0C\x0E-\x1F\x21\x23-\x5B\x5D-\x7F]|(?:\x5C[\x00-\x7F]))*\x22)))*@(?:(?:(?!.*[^.]{64,})(?:(?:(?:xn--)?[a-z0-9]+(?:-[a-z0-9]+)*\.){1,126}){1,}(?:(?:[a-z][a-z0-9]*)|(?:(?:xn--)[a-z0-9]+))(?:-[a-z0-9]+)*)|(?:\[(?:(?:IPv6:(?:(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){7})|(?:(?!(?:.*[a-f0-9][:\]]){7,})(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,5})?::(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,5})?)))|(?:(?:IPv6:(?:(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){5}:)|(?:(?!(?:.*[a-f0-9]:){5,})(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,3})?::(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,3}:)?)))?(?:(?:25[0-5])|(?:2[0-4][0-9])|(?:1[0-9]{2})|(?:[1-9]?[0-9]))(?:\.(?:(?:25[0-5])|(?:2[0-4][0-9])|(?:1[0-9]{2})|(?:[1-9]?[0-9]))){3}))\]))$/iD'
      , $mail)){
      return false;
      }
      
      /*
      '/^(([^<>()[\]\\.,;:\s@"\']+(\.[^<>()[\]\\.,;:\s@"\']+)*)|("[^"\']+"))@((\[\d' .
      '{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\])|(([a-zA-Z\d\-]+\.)+[a-zA-Z]{2,}))$/', $mail
      */
      
    
      else{
      return true;
      //echo 'Ok : Votre email est valide.';
      }
    
    }elseif($version>=4){
    
        /*ancien php4*/
        if(preg_match(
        '/^(([^<>()[\]\\.,;:\s@"\']+(\.[^<>()[\]\\.,;:\s@"\']+)*)|("[^"\']+"))@((\[\d' .
        '{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\])|(([a-zA-Z\d\-]+\.)+[a-zA-Z]{2,}))$/', $mail
        )){
        return true;
        }else{
        return false;
        }
        
    }else{
    return false;
    exit('PHP < 4 upgrade ... ');
    }

}

$test = array(
'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ@letters-in-local.org', 
'01234567890@numbers-in-local.net', 
'&\'*+-./=?^_{}~@other-valid-characters-in-local.net', 
'mixed-1234-in-{+^}-local@sld.net', 
'a@single-character-in-local.org', 
'"quoted"@sld.com', 
'"\e\s\c\a\p\e\d"@sld.com', 
'"quoted-at-sign@sld.org"@sld.com', 
'"escaped\"quote"@sld.com', 
'"back\slash"@sld.com', 
'single-character-in-sld@x.org', 
'local@dash-in-sld.com', 
'letters-in-sld@123.com', 
'uncommon-tld@sld.museum', 
'uncommon-tld@sld.travel', 
'uncommon-tld@sld.mobi', 
'country-code-tld@sld.uk', 
'country-code-tld@sld.rw', 
'local@sld.newTLD', 
'numbers-in-tld@sld.xn--3e0b707e', 
'local@sub.domains.com', 
'bracketed-IP-instead-of-domain@[127.0.0.1]', 
'@missing-local.org', 
'! #$%(),:;<>@[]\`|@invalid-characters-in-local.org', 
'.local-starts-with-dot@sld.com', 
'local-ends-with-dot.@sld.com', 
'two..consecutive-dots@sld.com', 
'partially."quoted"@sld.com valid', 
'the-local-part-is-invalid-if-it-is-longer-than-sixty-four-characters@sld.net', 
'missing-sld@.com', 
'sld-starts-with-dashsh@-sld.com', 
'sld-ends-with-dash@sld-.com', 
'invalid-characters-in-sld@! "#$%(),/;<>_[]`|.org', 
'local@second-level-domains-are-invalid-if-they-are-longer-than-sixty-three-characters.org', 
'missing-dot-before-tld@com', 
'missing-tld@sld.', 
' invalid', 
'missing-at-sign.net', 
'unbracketed-IP@127.0.0.1', 
'invalid-ip@127.0.0.1.26', 
'another-invalid-ip@127.0.0.256', 
'IP-and-port@127.0.0.1:25' 
);

/*test de la regex*/
foreach($test as $v){
testRegex($v);
if(!testRegex($v)){
echo $v.'<font color="red"> MAUVAIS FORMAT E-MAIL.</font><br />';
}else{
echo $v.'<font color="red"> BON FORMAT E-MAIL.</font><br />';
}
}

echo '<hr>';
/*faire vos tests ...*/
$t=$_POST['email']="sarkofage@orange.fr";
if(verifMail($_POST['email'])){
echo $t.' bon mail';
}else{
echo $t.' pas bon mail';
}
?>

Remarque :
Controle poussé du champs email ...

Snippets en rapport avec : Regex, Email, Php, Adresse, Control



Codes sources en rapport avec : Regex, Email, Php, Adresse, Control

{Visual Basic, VB6, VB.NET, VB 2005} TRAITEMENT ADRESSES E-MAIL
CE CODE FAIT L'operation suivante: de : ccc@ccc.com ggg@ggg.com aaaa@bbbb.com en:ccc@ccc.com,...

{JAVA / J2EE} [J2ME] MAILXPRESS, UNE PETITE APPLICATION D'ENVOI DE MAIL ÉCRIT EN LWUIT
MailXpress est une petite application J2ME pour envoyer des emails. Un carnet d'adresse d'email est ...

{PHP} RÉCUPÉRER DES INFORMATIONS SUR ALLOCINE.FR
Ce script va récupérer des informations sur le site Allocine.fr sous forme de tableau. Ex : Ar...

{Visual Basic, VB6, VB.NET, VB 2005} ANALYSE VARIABLES PHP
Bonjour, Dans le cadre mon job, on m'a refilé le code PHP d'un presta externe parti en laissant u...

{Flash} RÉCUPÉRER UNE VARIABLE DANS L'ADRESSE DIRECTEMENT DANS FLASH
Récupérer des variables... Voila une catégorie bien pleine... Cependant, récupérer celle dans l'adr...

{} VALIDATEUR ADRESSE EMAIL (RFC 2822)
Validation d'adresse email conformément au spécification de la RFC 2822 : http://tools.ietf.org/h...

{PHP} UTILISATION DU WEB SERVICE DE MAP24 POUR LA CORRECTION D'ADRESSE
Permet d'utiliser le web service de Map24 pour corriger des adresse (utilse pour avoir des base de d...

{PHP} CLASSE SIMPLE EMAIL
Bonjour, ceci est ma toute première classe en php5, je conçois qu'elle ne peut pas faire beaucoup d...

{Visual Basic, VB6, VB.NET, VB 2005} VERIFICATION EXISTENCE D'UNE ADRESSE EMAIL SUR INTERNET
pour verifier la validité d'une adresse Email j'ai suivi 3 phase: 1 ) je verifie le format stand...

{PHP} CLASSE DE MESSAGERIE
Il sagit comme le titre l'indique d'une classe php destinée à l'envoi de mail Cette classe permet ...