Validar un correo con php

31 de /julio07 de /2014
3m 58s
php
4 comentarios
16700
3.3

Proteger el envio de un input de tipo email es una buena solución para evitar que se envien datos incorrectos al servidor, crearemos un archivo unico para reutilizar en cualquier proyecto web.

Comenzamos creando el script PHP en el creamos una función a la que nombramos «filtroMail()» y le pasamos un valor, creamos un «if», condición en la que filtramos el valor recibido con FILTER_VALIDATE_EMAIL, si este devuelve FALSE, hacemos un «return false» y la función devolverá FALSE .

<?php	function filtroMail($valor){	if(filter_var($valor, FILTER_VALIDATE_EMAIL) === FALSE){	return false;

Creamos un «else» en el que vamos a incluir varios «if» y a usar expresiones regulares mediante «preg_match», una función de PCRE que realiza una comparación con una expresión regular, para proteger y evitar errores en los datos enviados, vamos a descartar algunos caracteres que no queremos que se envien a traves del formulario como: ‘, «, ;, creamos un «if», condición «preg_match» y la correspondiente expresión regular, le pasamos el valor y hacemos un «return false», la función devolverá FALSE .

}else{	if (preg_match("/(['])/",$valor)) {	return false;	}	if (preg_match('/(["])/',$valor)) {	return false;	}	if (preg_match("/([;])/",$valor)) {	return false;	}

Creamos otro «if», condición «preg_match», y una expresión regular que identifique un orden correcto de caracteres para un correo electrónico, por lo que en este caso, la condición a cumplir seria si la condición es diferente de la expresión regular, asi que usaremos el operador «!» en «preg_match» o lo que es lo mismo «!preg_match», le pasamos el valor y hacemos un «return false», la función devolverá FALSE .

if (!preg_match("/([\w\-]+\@[\w\-]+\.[\w\-]+)/",$valor)) {	return false;	}

Por ultimo, creamos en «else» en el que saneamos el valor devuelto con «FILTER_SANITIZE_EMAIL» y devolvemos TRUE.

}else{	$valor = filter_var($valor, FILTER_SANITIZE_EMAIL);	return true;	}

A continuación escribimos el siguiente código:

if (!filtroMail($valor)) {	echo 'Email incorrecto';	}else {	echo 'Email correcto';	}

Guardamos el archivo como «funcion_validar_mail.php»

A continuación creamos el archivo «index.php» en el que insertamos un formulario que enviará por POST los valores al archivo «funcion_validar_mail.php».

index.php

<!DOCTYPE HTML>
<html lang="es">
<head>	<meta charset="UTF-8">	<title>Didesweb, proteger el campo email</title>	<!-- Didesweb -->	<!-- Diseño y desarrollo web -->	<!-- https://didesweb.com/-->	<!-- Este obra está protegida bajo licencia Creative Commons Attribution -->
</head>
<body>	<h1>© Didesweb, proteger el campo email</h1>	<form action="funcion_validar_mail.php" method="POST">	<input type="text" name="variable_input"/>	<input type="submit" value="enviar"/>	</form>
</body>
</html>

El código completo de la función:

funcion_validar_mail.php

<?php
$valor = $_POST['variable_input'];
?>
<?php function filtroMail($valor){ if(filter_var($valor, FILTER_VALIDATE_EMAIL) === FALSE){	return false; }else{	if (preg_match("/(['])/",$valor)) { return false;	}	if (preg_match('/(["])/',$valor)) { return false;	}	if (preg_match("/([;])/",$valor)) { return false;	}	if (!preg_match("/([\w\-]+\@[\w\-]+\.[\w\-]+)/",$valor)) { return false;	}else{ $valor = filter_var($valor, FILTER_SANITIZE_EMAIL); return true;	} } } if (!filtroMail($valor)) { echo 'Email incorrecto'; }else { echo 'Email correcto'; } ?>

Puedes ver y descargar el código de este archivo en mi cuenta de GitHub

Valoraciones

4 valoraciones

  • Manie 16 noviembre, 2022

    Thanks for finally talking about

  • Omer 10 noviembre, 2022

    Keep on writing, great job!

  • Miguel Ángel Aguilar 28 marzo, 2021

    Solo sirve para validar la redacción del email que igualmente puede ser falso

    1. Roque Arnás 15 abril, 2021

      Correcto Miguel Ángel, solo estamos validando el campo email para comprobar que el formato sea correcto, para comprobar si el correo existe necesitas usar la librería VerifyEmail.php o un servicio profesional como Verificaremails

Tu valoración

* Tu valoración puede tardar hasta 72 horas en publicarse.

He leido y acepto el Aviso legal y condiciones de uso

Quizás te interese ...

Título cookies

Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

Permitir todas las cookies Configurar Política de cookies