Tempo fa ho risolto in questo modo con ajax:
File email_spam.php con la blacklist
Codice PHP:
<?php
$blacklist = array (
'clrmail.com',
'a.b.c.dropmail.me',
'fudgerub.com'
);
?>
scrivimi1.php che include il file php con la blacklist
Codice PHP:
<?php
include ("email_spam.php");
?>
<script>
function spamMail() {
var f = document.forms.mioform1.suoemail.value;
var input = document.forms.mioform1.suoemail;
var xxx = new Array(<?php echo "'" . implode("', '", $blacklist) . "'"; ?>);
var fields = f.split("@");
//Se l'indirizzo non ha dominio, non fare nulla
if (fields.length == 0) {
return true;
}
var domain = fields[fields.length -1 ];
// Se incontri un dominio della blacklist, fermati
for (var i = 0; i < xxx.length; i++) {
if (domain == xxx[i]) {
document.getElementById('spamMail').innerHTML = "• Questa email non è accettata";
input.onblur = function () { input.focus(); }
return false;
}
}
document.getElementById('spamMail').innerHTML = "";
input.onblur = function () {}
return true;
}
</script>
script.js
Codice PHP:
//Questa funzione richiama il file email_ajax.php
function validaMail() {
var input = document.forms.mioform1.suoemail;
var email = input.value;
var container = document.getElementById('validaMail');
// Stops if no address was given
if (email === "") {
input.onblur = function () {}
return;
}
$.get("email_ajax.php", { "email": email }, function (data) {
if (data.valid) {
container.innerHTML = "";
input.onblur = function () {}
}
else {
container.innerHTML = "• Inserire un'email valida";
input.onblur = function () { input.focus(); }
}
});
}
email_ajax.php
Codice PHP:
<?php
//Questa funzione si collega a script.js e serve a validare in js FILTER_VALIDATE_EMAIL
header('Content-Type: application/json');
// Stops if no address is given
if (!isset($_GET['email'])) {
echo json_encode(array("valid" => false));
return;
}
// Stops if address is empty or invalid
$email = $_GET['email'];
if (empty($email) || filter_var($email, FILTER_VALIDATE_EMAIL) === false) {
echo json_encode(array("valid" => false));
return;
}
// Address is valid
echo json_encode(array("valid" => true));
E infine il controllo in php che si collega anch'esso alla blakclist
Codice PHP:
//Email (Campo obbligatorio), valida email e intercetta il dominio spam
function get_domain($email) {
if (filter_var($email, FILTER_VALIDATE_EMAIL) === false) {
return "";
}
return array_pop(explode('@', $email));
}
function in_blacklist($domain) {
global $blacklist;
return in_array($domain, $blacklist);
}
$domain = get_domain($suoemail);
if (empty($suoemail)) {
$errore .= "• Inserire l'email<br><br>";
}
else {
if (filter_var($suoemail, FILTER_VALIDATE_EMAIL) === false) {
$errore .= "• Inserire un'email valida<br><br>";
}
elseif (empty($domain) || in_blacklist($domain)) {
$errore .= "• Questa email non è accettata<br><br>";
}
}