Validar un correo con php

31 de /julio07 de /2014
3m 58s
php
4 comentarios
17818
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 ...

Utilizamos cookies para mejorar tu experiencia

Utilizamos cookies propias y de terceros para personalizar el contenido, analizar nuestros servicios, ofrecer funciones de redes sociales, analizar el tráfico y mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación.

Permitir todas las cookies Configurar Política de cookies