PDA

View Full Version : Continuo SPAM sul modulo contatti


robertino_salemi
05-02-2014, 09:00
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:

//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&amp;page=7&amp;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>

tomminno
05-02-2014, 11:18
Qui qualcosa non mi torna:


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 {
...


Dai errore se recaptcha ritorna is_valid mentre mandi la mail in caso contrario?

wingman87
05-02-2014, 11:51
No, è solo indentato da cani, l'else si riferisce al precedente elseif

robertino_salemi
05-02-2014, 11:52
No, nel caso in cui recaptcha è valido verifico se i campi 'obbligatori' non sono vuoti.

airon
05-02-2014, 13:40
Un attimo... mi ero perso una parentesi :D

Il codice parentesi e condizione è corretto.
Hai verificato che col codice captcha inserito in modo scorretto o non proprio inserito ti invia la mail? Hai verificato i campi del captcha che passi col POST? Se si proverei a stampare $resp mi sa che il problema è li.

robertino_salemi
05-02-2014, 14:51
Ho modificato il codice così:


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($_POST['nome']==NULL){
echo '<div class="warning">'.form_verify_nome.'</div>';}


elseif($_POST['mail']==NULL){ echo '<div class="warning">'.form_verify_mail.'</div>';}


elseif($_POST['messaggio']==NULL){ echo '<div class="warning">'.form_verify_messaggio.'</div>';}


else {



if($resp->is_valid){



$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">'.form_send_ok.'</div>';


} else {

echo '<div class="errore">'.form_send_wrong.'</div>';
}

}
}

ma i messaggi continuano ad arrivare, quelli di SPAM intendo.

Confermo che se il codice captcha manca o è errato l'invio non avviene.

Ecco la pagina in questione: link (http://www.florenstudios.com/en-one-bedroom-self-catering-florence-center.html)

robertino_salemi
05-02-2014, 16:41
No, è solo indentato da cani, l'else si riferisce al precedente elseif

Ci tengo molto all'indentazione, ma facendo il copia-incolla da Notepad++ ho perso la formattazione e ho cercata renderla nuovamente comprensibile qui direttamente nel forum.

wingman87
05-02-2014, 19:27
Ci tengo molto all'indentazione, ma facendo il copia-incolla da Notepad++ ho perso la formattazione e ho cercata renderla nuovamente comprensibile qui direttamente nel forum.

Non voleva essere una critica a te, poteva anche essere codice scritto da altri... Comunque quando perdi l'indentazione è probabile che nel codice ci siano un po' di righe indentate con gli spazi e un po' con i tab. In alcuni editor ci sono dei comandi per omogeneizzare questa situazione.

Per quanto riguarda il tuo problema... sei sicuro che lo spam arrivi da quel form? Non potrebbe arrivare da un altro form in un'altra pagina?

robertino_salemi
05-02-2014, 23:53
Nessun problema.

Si, sicurissimo, ho modificato l'oggetto della mail come verifica e coincide con quello modificato.

Adesso ho usato un antispam fatto in caso, ma vorrei capire perchè quello non va! :(

robertino_salemi
17-02-2014, 13:45
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.