• Super User

    Continuo SPAM sul modulo contatti

    Salve a tutti,
    uso sempre la stessa sintassi e codice per la realizzazione del modulo contatti, l'ho applicata in diversi siti web, ma in uno di questi lo spam arriva sempre!

    Ho cambiato struttura del codice per le varie verifiche
    Ho cambiato il codice di sicurezza, attualmente ho inserito il codice reCaptcha

    I messaggi di SPAM non fanno altro che arrivare ugualmente.

    Vi posto il codice:
    [PHP]
    //CHIAVE privata e pubblica sono state dichiarate in un altro file
    if(isset($_GET["upload"]) and $_GET["upload"]==1){

           //load recaptcha file
           require_once('libraries/captcha/recaptchalib.php');
           //check recaptcha fields
           $resp = recaptcha_check_answer ($privatekey,
                                                          $_SERVER["REMOTE_ADDR"],
                                                          $_POST["recaptcha_challenge_field"],
                                                          $_POST["recaptcha_response_field"]);
    
           if($resp->is_valid){
    
                   if($_POST['nome']==NULL){ echo '<div class="warning">Campo nome vuoto</div>';}
                   
                   elseif($_POST['mail']==NULL){ echo '<div class="warning">Campo email vuoto</div>';}
    
                   elseif($_POST['messaggio']==NULL){ echo '<div class="warning">Messaggio testo vuoto</div>';}
    
            else {
    
            $messaggio="Hai ricevuto un nuovo messaggio:
            Nome: ".$_POST['nome']."
            Telefono: ".$_POST['telefono']."
            Email: ".$_POST['mail']."
            Messaggio: ".stripslashes($_POST['messaggio']);
    
            $a = mail($email_sito_web, "Messaggio da $nome_sito_web", $messaggio, "From: ".$_POST['nome']." <".$_POST['mail'].">") or print ("<script> alert('Errore invio dell'e-mail!')</script>"); 
    
            echo '<div class="success">Messaggio inviato correttamente</div>';            }                            
            } else { 
            
            echo '<div class="errore">Errore nell\'invio o messaggio di sicurezza errato</div>';
    
            }
    

    } ?>

    <script type="text/javascript"> var RecaptchaOptions = { theme : 'clean' }; </script>

    <form id="two" name="modulo" method="POST" action="index.php?lang=it&page=7&upload=1" onSubmit="return formCheck(this)">

    <fieldset id="personal">
    <legend>Modulo contatti</legend>
    <label>Nome</label>
    <input name="nome" type="text" size="35" value="<?php echo (isset($_POST['nome']) ? $_POST['nome'] : ''); ?>"/>

    <br />
    
    <label for="firstname">Telefono</label>
    <input name="telefono" type="text" size="35" value="<?php echo (isset($_POST['telefono']) ? $_POST['telefono'] : ''); ?>"/>
    
    <br />
    
    <label for="mail">Email</label>
    <input type="text" name="mail" size="35" value="<?php echo (isset($_POST['mail']) ? $_POST['mail'] : ''); ?>">
    
    <br />
    
    <label for="message">Messaggio</label>
    <textarea name="messaggio" cols="45" rows="8"><?php echo (isset($_POST['messaggio']) ? $_POST['messaggio'] : ''); ?></textarea>
    
     <br /><br />
    
      <center>
      
      <?php
      // load recaptcha file
      require_once('libraries/captcha/recaptchalib.php');
      // display recaptcha test fields
      echo recaptcha_get_html($publickey);
      ?>
    
     </center>
    
     <br /><br />
    
      <center><input id="button2" type="submit" value="Invia" title="Invia"></center>
    

    </fieldset>

    </form>
    [/PHP]


  • Super User

    Ma ciò che non mi da pace è il perchè questo modulo non deve funzionare e risulta così vulnerabile.

    Ci sono milioni di guide in merito che spiegano come usare il reCaptcha, funziona a tutti e a me no? 😐


  • User Attivo

    C'è un'altra tecnica, più semplice ed efficace del CAPTCHA, di cui si parla ad esempio qui: http://www.sitepoint.com/easy-spam-prevention-using-hidden-form-fields/

    Molto semplicemente, crei un campo "nascosto" (cioè che proprio non si vede) così:
    [HTML]<input type="text" name="acchiapparobot" style="display: none;">[/HTML]
    I robots di SPAM lo riempiranno comunque mentre gli utenti veri no (perchè non lo vedono): scarti tutti i form che hanno questo campo compilato e sei a posto... 😉

    HTH, ciao!


  • Super User

    Esatto, avevo provato tempo fa qualcosa del genere...ma non ricordo perchè la cambiai, eventualmente la rimetto nuovamente.

    Grazie.


  • Super User

    Alla fine ho optato per dei controlli custom, esempio che un campo deve essere solo numerico o in un determinato formato e al momento non è arrivato più spam.

    Vedrò di testare il reCaptcha presso un altro sito e vedere se mi da lo stesso problema.

    Grazie a tutti.