Validar
email en PHP
Comprobar
la validez de una dirección de correo electrónico, es decir,
validar la buen redacción de un email.
Vamos a ver una función muy
útil en PHP que sirve para comprobar la validez de un correo. En
realidad comprueba si una dirección de correo electrónico
está bien escrita sintácticamente, dejando de lado las comprobaciones
de si ese mail existe o no realmente, que no se pueden hacer tan fácilmente. |
|
Vamos a escribir una función
que se llama comprobar_email y recibe la cadena de texto con el email que
queremos validar. Si dicho email es correcto desde el punto de vista sintáctico,
es decir, si tiene un nombre de usuario, una arroba y una terminación
con el nombre de un dominio o subdominio, etc, devolverá un 1, es
decir, verdadero.
En caso de que el email no esté
correctamente escrito, la función devolvería 0, que equivale
a falso.
La función en si da por hecho
inicialmente que el email es erróneo y realiza una serie de comprobaciones
que, si todas responden correctamente, dan por conclusión que el
email sí estaba bien escrito. Si alguna de esas comprobaciones no
era correcta, no se llegaría al final de las comprobaciones y quedaría
el resultado como se ha supuesto en un principio, es decir, como incorrecto.
function
comprobar_email($email){
$mail_correcto = 0;
//compruebo unas cosas primeras
if ((strlen($email) >= 6) && (substr_count($email,"@") == 1) &&
(substr($email,0,1) != "@") && (substr($email,strlen($email)-1,1)
!= "@")){
if ((!strstr($email,"'")) && (!strstr($email,"\"")) &&
(!strstr($email,"\\")) && (!strstr($email,"\$")) && (!strstr($email,"
"))) {
//miro si tiene caracter .
if (substr_count($email,".")>= 1){
//obtengo la terminacion del dominio
$term_dom = substr(strrchr ($email, '.'),1);
//compruebo que la terminación del dominio sea correcta
if (strlen($term_dom)>1 && strlen($term_dom)<5 && (!strstr($term_dom,"@"))
){
//compruebo que lo de antes del dominio sea correcto
$antes_dom = substr($email,0,strlen($email) - strlen($term_dom) - 1);
$caracter_ult = substr($antes_dom,strlen($antes_dom)-1,1);
if ($caracter_ult != "@" && $caracter_ult != "."){
$mail_correcto = 1;
}
}
}
}
}
if ($mail_correcto)
return 1;
else
return 0;
} |
Las comprobaciones
En el primer
if compruebo que el email tiene por lo menos 6 caracteres (el mínimo),
que tiene una arroba y sólo una y que no está colocada ni
al principio ni al final.
En el segundo if comprueba que no
tiene algunos caracteres no permitidos. Y los restantes hacen comprobaciones
de las distintas partes de la dirección de correo, a saber: Que
hay un punto en algún lado y que la terminación del dominio
es correcta y que el principio de la dirección también es
correcto. |
|
Finalmente, se devuelve la variable
local utilizada para guardar la validez o incorrección del correo.
Fuente: desarrolloweb.com
|