Test Foro de elhacker.net SMF 2.1

Programación => Desarrollo Web => PHP => Mensaje iniciado por: el-brujo en 8 Mayo 2012, 19:38 PM

Título: Validación e-mail formulario
Publicado por: el-brujo en 8 Mayo 2012, 19:38 PM
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;

Título: Re: Validación e-mail formulario
Publicado por: Graphixx en 9 Mayo 2012, 20:26 PM
Muy muy bueno este material para depurar Bases de Datos, sobretodo lo de la comprobacion de registros MX.
Título: Re: Validación e-mail formulario
Publicado por: :ohk<any> en 10 Mayo 2012, 19:37 PM
Que ha pasado, un aporte del el-brujo.
Se nota que hace rato que no paso por el foro.
Excelente.

Saludos
Título: Re: Validación e-mail formulario
Publicado por: ~ Yoya ~ en 11 Mayo 2012, 16:55 PM
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.
Título: Re: Validación e-mail formulario
Publicado por: jhonatanAsm en 12 Mayo 2012, 03:21 AM
es la mas rápida... ,
   y la más segura (aunque en estos tiempos, la que menos fallos se le puedan encontrar) ??

salu2.