Validar una dirección de 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.
Código de la función:
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.
|