Sul mio sito www.handlewithcare.it ho costruito delle pagine per il contatto rapido che sfruttano il comando mail() di PHP. Tutto funziona così bene che i soliti spammer hanno pensato di sfruttare la cosa per mandarmi le loro porcherie: si tratta di 5 o 6 mail al giorno, però mi piacerebbe annullarle perché mi sembra un'operazione semplice. Per realizzare un sistema captcha vero e proprio avrei bisogno di un po' di tempo in più che adesso non ho, così ho provato il sistema seguente, ma (come sempre) sbaglio qualcosa, chissà che qualcuno di voi non sia così gentile da capire l'errore.
PREMESSA: Tramite il comando getenv("REMOTE_ADDR") lo script inserisce automaticamente nei messaggi che mi vengono recapitati l'IP del mittente. Le e-mail degli spammers hanno sempre gli stessi IP, che ho messo nel file 'blacklist.php' riportato qui di seguito:
codice:
<?php
$banned = array(
'66.246.246.109',
'82.147.33.181',
'140.130.1.49',
'210.5.228.115',
'212.227.93.20',
'213.96.37.223',
'216.126.141.44',
'218.154.70.93'
);
?>
Il filtro antispam dovrebbe agire all'interno della pagina che invia effettivamente i messaggi, il cui codice che ci interessa è il seguente:
codice:
include 'blacklist.php';
$ip = getenv("REMOTE_ADDR");
$msgformat = "From: $name ($ip)\nEmail: $email\n\n$msg";
// FILTRO
if ($ip == $banned) {
echo "<h3>Indirizzo IP non autorizzato!</h3>";
}
else {
mail($receiverMail, $subject, $msgformat, "From: $name <$email>");
echo "<h3>Il tuo messaggio è stato spedito!</h3>
Riceverai una risposta il più presto possibile.</p>"; }
Tutto molto bello, ma ricevo ancora i messaggi dagli IP che dovrebbero essere bloccati...
Cosa sbaglio?