Validación e-mail formulario

Iniciado por el-brujo, 8 Mayo 2012, 19:38 PM

0 Miembros y 1 Visitante están viendo este tema.

el-brujo

Validar e-mail:

Código (php) [Seleccionar]
function verify_email($email){

   if(!preg_match('/^[_A-z0-9-]+((\.|\+)[_A-z0-9-]+)*@[A-z0-9-]+(\.[A-z0-9-]+)*(\.[A-z]{2,4})$/',$email)){
       return false;
   } else {
       return $email;
   }
}


Código (php) [Seleccionar]

   function EmailValidation($email)
   {
   $email = htmlspecialchars(stripslashes(strip_tags($email))); //parse unnecessary characters to prevent exploits
   if ( eregi ( '[a-z||0-9]@[a-z||0-9].[a-z]', $email ) )
   { //checks to make sure the email address is in a valid format
   $domain = explode( "@", $email ); //get the domain name
   if ( @fsockopen ($domain[1],80,$errno,$errstr,3))
   {
   //if the connection can be established, the email address is probably valid
   return true;
   } else
   {
   return false; //if a connection cannot be established return false
   }
   return false; //if email address is an invalid format return false
   }
   }




Código (php) [Seleccionar]
function validar_email($email) {

list($local, $domain) = explode("@", $email);

$pattern_local = '^([0-9a-z]*([-|_]?[0-9a-z]+)*)(([-|_]?)\.([-|_]?)[0-9a-z]*([-|_]?[0-9a-z]+)+)*([-|_]?)$';
$pattern_domain = '^([0-9a-z]+([-]?[0-9a-z]+)*)(([-]?)\.([-]?)[0-9a-z]*([-]?[0-9a-z]+)+)*\.[a-z]{2,4}$';

$match_local = eregi($pattern_local, $local);
$match_domain = eregi($pattern_domain, $domain);

if ($match_local && $match_domain) {
return 1;
} else {
return 0;
}
}


En PHP 5:

Se añade la funcionalidad de filter_var

Código (php) [Seleccionar]
if(filter_var("prueba@dominio.com", FILTER_VALIDATE_EMAIL)){
echo "Ok";
} else {
echo "Error";
}


Usando filter _var y comprobando que tenga un punto el dominio con una expresión regular:

Código (php) [Seleccionar]
function validateEmailAddress($email) {
    return filter_var($email, FILTER_VALIDATE_EMAIL) && preg_match('/@.+\./', $email);
}


Ejemplo Wordpress (usando expresiones regulares)

Código (php) [Seleccionar]

   function is_email($email) {
    if( strlen( $email ) < 3 ){
     return false;
    }
    if( strpos( $email, '@', 1 ) === false ){
     return false;
    }
    list( $local, $domain ) = explode( '@', $Valor, 2 );
    if( !preg_match( '/^[a-zA-Z0-9!#$%&\'*+\/=?^_`{|}~\.-]+$/', $local ) ){
     return false;
    }
    if( preg_match( '/\.{2,}/', $domain ) ){
     return false;
    }
     if( trim( $domain, " \t\n\r\0\x0B." ) !== $domain ){
     return false;
    }
     $subs = explode( '.', $domain );
     if( 2 > count( $subs ) ){
     return false;
    }
    foreach ( $subs as $sub ) {
     if( trim( $sub, " \t\n\r\0\x0B-" ) !== $sub ){
      return false;
     }
     if( !preg_match('/^[a-z0-9-]+$/i', $sub ) ){
      return false;
     }
    }
    return true;
   }



Verificar e-mail mirando registro MX si es válido,  útil para separar nombre y dominio de un e-mail


Código (php) [Seleccionar]
function verify_email_dns($email){

   // This will split the email into its front
   // and back (the domain) portions
   list($name, $domain) = explode('@',$email);

   if(!checkdnsrr($domain,'MX')){

       // No MX record found
       return false;

   } else {

       // MX record found, return email
       return $email;

   }
}



Código (php) [Seleccionar]
$string = 'some_name@somedomain.com';
$res = explode('@', $string);
// array
echo $res[0];
$name = $res[0];
echo $name;



substr

Código (php) [Seleccionar]
$mail = "some_name@somedomain.com";
echo substr($mail, 0, strpos($mail, '@') );


explode

Código (php) [Seleccionar]
list($name, $domain) = explode('@', $mail);
echo $name;


Graphixx

Muy muy bueno este material para depurar Bases de Datos, sobretodo lo de la comprobacion de registros MX.
Nada tiene fin solo hay pequeñas pausas, pausas que determinan el comienzo de otros. Graphixx
Mi blog

:ohk<any>

Que ha pasado, un aporte del el-brujo.
Se nota que hace rato que no paso por el foro.
Excelente.

Saludos
Y es que a veces pienso que si no estuviera loco no podría salir adelante.
Lo que no se es capaz de dar, en realidad no se posee, uno es poseído por ello.

~ Yoya ~

De todas creo que esta es la mas rápida:
Código (php) [Seleccionar]
if(filter_var("prueba@dominio.com", FILTER_VALIDATE_EMAIL)){
echo "Ok";
} else {
echo "Error";
}


Igual la 2º y 3º no es recomendado su uso ya que ocupan eregi para su funcionamiento y esa funcion es obsoleta desde PHP >= 5.3.0.

Saludos.
Mi madre me dijo que estoy destinado a ser pobre toda la vida.
Engineering is the art of balancing the benefits and drawbacks of any approach.

jhonatanAsm

es la mas rápida... ,
   y la más segura (aunque en estos tiempos, la que menos fallos se le puedan encontrar) ??

salu2.
mi primer lenguaje fue ensamblador, tengo 60 años, y no creo que haya sido un error.

- La mayor complejidad de todas es hacer complejo algo que no lo es.

- El inteligente no es aquel que lo sabe todo sino aquel que sabe utilizar lo poco que sabe.