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


Sé el primero en valorar

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

He leido y acepto el Aviso legal y condiciones de uso

Utilizamos cookies propias y de terceros para personalizar el contenido y los anuncios, ofrecer funciones de medios sociales y analizar el tráfico. Además compartimos información sobre el uso que haces de nuestra web con nuestros partners de medios sociales, de publicidad y de análisis web. Si continúas navegando estás dando tu consentimiento para la aceptación de nuestra Política de cookies.

ACEPTAR
Aviso de cookies