Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    Un semplice filtro antispam

    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?
    IN OMNIA PERICVLA TASTA TESTICVLA

  2. #2
    $benned è un array, quindi prov così...

    codice:
        // FILTRO
        if (in_array($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>"; }

  3. #3
    Ti ringrazio, se non mi risenti vuol dire che hai risolto il problema...

    Ciao.
    IN OMNIA PERICVLA TASTA TESTICVLA

  4. #4
    Ciao a tutti, carcavo nel forum una soluzione antispam, ho trovato questa pagina e ho provato ad adattare il codice per il mio form:

    Codice PHP:
    <?php
    $banned 
    = array(
          
    'http',
           
    'www'
           
    );
    ?>
    <?php
    $messaggio 
    = empty($messaggio);

    // FILTRO
    if ($messaggio == $banned) {
    echo 
    "<h3>Finta pagina di conferma!</h3>";
      }
     else  
    "Ok"
    ?>
    , ho corretto il codice come sopra ma non mi funziona.
    non conosco php potreste aiutarmi?
    grazie 1000 andrea

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.