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

CAPTCHA


Utilizamos cookies propias y de terceros para el correcto funcionamiento de la web, personalizar el contenido y mostrar publicidad en función de las preferencias del visitante. Puedes encontrar más información en nuestra Política de cookies.

ACEPTAR
Aviso de cookies