Ver Mensaje Individual
  #1 (permalink)  
Antiguo 08/10/2010, 07:50
Avatar de repara2
repara2
 
Fecha de Ingreso: septiembre-2010
Ubicación: München
Mensajes: 2.445
Antigüedad: 13 años, 7 meses
Puntos: 331
Pequeñísimo aporte: función para validar emails

Espero que a alguien le sirva:

Código PHP:
<?php

function validareMail($xEmail){
    
/**
     * Validez de la dirección
     */
    
$xValid true;
    
/**
     * Posición de la arroba en la dirección para obtener dirección y dominio
     */
    
$atPos strrpos($xEmail'@');

    
//Si $atPos es booleana Y es falso entonces no es email
    
if(is_bool($atPos) && !$atPos){
        
$xValid false;
    }else{
        
/**
         * El dominio, la parte posterior desde la posición de arroba
         */
        
$xDomain substr($xEmail$atPos+1);
        
/**
         * Idem anterior para la dirección
         */
        
$xAddr substr($xEmail0$atPos);
        
/**
         * La longitud de la direccion
         */
        
$xAddrLen strlen($xAddr);
        
/**
         * La longitud del dominio
         */
        
$xDomainLen strlen($xDomain);

        
//La dirección ha de ser >1 y <64
        
if ($xAddrLen || $xAddrLen 64){
            
$xValid false;

            
//el dominio >1 y <64
        
}else if ($xDomainLen || $xDomainLen 255){
            
$xValid false;

            
//Validación mediante expresiones regulares, no puede contener punto al comienzo
        
}else if ($xAddr[0] == '.' || $xAddr[$xAddrLen-1] == '.'){
            
$xValid false;

            
//No puede contener barras // o \\
        
}else if (preg_match('/\\.\\./'$xAddr)){
            
$xValid false;

        }else if (!
preg_match('/^[A-Za-z0-9\\-\\.]+$/'$xDomain)){
            
$xValid false;

        }else if (
preg_match('/\\.\\./'$xDomain)){
            
$xValid false;

        }else if(!
preg_match('/^(\\\\.|[A-Za-z0-9!#%&`_=\\/$\'*+?^{}|~.-])+$/'str_replace("\\\\","",$xAddr))) {
            if (!
preg_match('/^"(\\\\"|[^"])+"$/'str_replace("\\\\","",$xAddr))){
                
$xValid false;
            }
        }
        
//Debe existir el dominio
        
if ($xValid && !(checkdnsrr($xDomain,'MX') || checkdnsrr($xDomain,'A'))){
            
$xValid false;
        }
    }
    return 
$xValid;
}

/**
 * Implementación
 */

$email "[email protected]";
if(!
validareMail($email)){
    echo 
"Email $email es incorrecto";
}
else{
    echo 
"$email es correcto";
}

$email "[email protected]";
if(!
validareMail($email)){
    echo 
"<br>Email $email es incorrecto";
}
else{
    echo 
"<br>$email es correcto";
}

    
?>