validare un indirizzo email

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.044
150
63
PR
www.borgo-italia.it
puo essere utile, soprattutto nei form, validare l'indirizzo email inserito da un utente, non solo
verificando che sia formalmente velido, ma avere una certa sicurezza che l'indirizzo esista.
questa funzione, penso dia una certasicurezza (non il 100x100).
penso che la funzione sia adeguatamente commentatata
PHP:
<?php
function valida_email($email){
	//per prima cosa valido formalmente l'indirizzo
	if(!filter_var($email, FILTER_VALIDATE_EMAIL)){
		return false;//non formalmente valido
	}else{
		//l'indirizzo è formalmente valido e quindi lo divido
		$divisa=explode('@',$email);
		//verifico che sia possibile utilizzare getmxrr e che il dominio esita
		//ho letto che su piattaforma windows getmxrr ha dei problemi
		if(function_exists("getmxrr") && getmxrr($divisa[1], $mxhosts)){
			//un elenco dei record MX trovati è posto nell'array $mxhosts.
			return true;//è stato possibile usare getmxrr e il dominio esiste
		}elseif (@fsockopen($divisa[1], 25, $err_nu, $err_str, 5)){
        	return true;//non posso usare getmxrr ma il dominio esiste
		}else{
        	return false;//il dominio non esiste
		}
	}
}
//TEST.......
//l'array: valida, inesistente, errata .. il dubbio
$em=array("info@borgo-italia.it","xx@xx.it","info#borgo-italia.it","a@gmail.com");
foreach($em as $e){
	if(valida_email($e)){
		echo "$e valida e esitente<br />";
	}else{
		echo "$e non è formalmente valida o non è esitente<br />";
	}
}
//il dubbio è che probabilmente a@gmail.com non esiste ma gmail.com si
//analogo discorso per i vari indirizzi tipo @libero.it o @email.it.....
?>
 

Discussioni simili