- Home
- Categorie
- Coding e Sistemistica
- PHP
- Formmail con spamming ...aiuto
-
Io ho risolto mettendo una condizione per mandare l'email:
if(strpos(getenv('HTTP_REFERER'),$_SERVER["SERVER_NAME"])!==false)Che impedisce di usare il form da parte di programmi automatici, di solito lo spam non lo fanno "a mano".
Se neanche quello ti aiuta puoi richiedere un codice di controllo, tipo il modulo di segnalazione sito di msn.
-
Intendi un captcha?
-
Sì, io mi trovo bene con "Jax Captcha Class". E' un po' rompiscatole perchè è case sentitive, ma funziona alla grande.
-
Se non hai molta dimestichezza col php, puoi introdurre domande del tipo:"quanto fà 2+2?" o "di che colore era il cavallo bianco di Napoleone?"... se la risposta (ovvia) è giusta permetti l'invio di email altrimenti no...
Ciao
-
Sì però se in un modulo contatti trovi la domanda "quanto fa 2+2" sembra una specie di test di ammissione, del tipo "se sei troppo scemo non ti rispondo".
-
Allora prova a mettere un' equazione differenziale... scherzi a parte funziona (parlo del 2+2), specialmente se lo salvi in un immagine.... alla fine provare non costa nulla...
Ciao
-
Ciao Tiger,
potresti provare questo script che ho creato:
http://www.giorgiotave.it/forum/php-mysql/25151-form-php-invaso-dallo-spam-2.html
Genera due numeri casuali e verifica che sia immessa correttamente la somma tra questi
Fammi sapere,ciao!
-
Ciao a tutti,
mi ripropongo sempre con lo stesso problema. Ho uno spam che mi sta massacrando di porcheria da un formmail che non ha controlli. Vorrei aggiungervi un captcha ma non ne trovo di pronti e semplici da installare. Qualcuno sa aiutarmi per cortesia? Ovviamente vorrei evitare di cambiare il contenuto del form, preferirei mettere un campo per il captcha prima di inviare il tutto.
Grazie...
-
TI consiglio "Jax Captcha Class". E' composto solo da un paio di file.
In alto nel tuo file mettirequire_once( 'class.captcha.php' ); if (empty($_GET['session_code'])) $session_code = md5(round(rand(0,40000))); else $session_code=$_GET['session_code']; $my_captcha = new captcha( $session_code, 'tmp' ); if($password!="" AND $my_captcha->verify($password)) { // TUTTO OK }else echo "Codice di controllo errato"; } $pic_url = $my_captcha->get_pic( 4 );
e nel form metti
.... <tr valign=top> <td nowrap><b>Codice di controllo</b></td> <td> <img src="captcha_image.php?img=<?=$pic_url?>"><br> Il codice qui sopra è <input type="text" name="password" class=casella size=5> </td> </tr> ...
-
Mi devi scusare Scar ma proprio non riesco a farlo funzionare...
...come faccio ad implementarlo nel form? Voglio dire..è possibile che quando valido il captcha, automaticamente mi si inviino i dati per mail?...perdona la mia ignoranza ma purtroppo mi trovo in una situazione di emergenza...
...grazie...
-
Prima cosa devi scaricare i file, non ricordo dove l'avevo preso comunque su google lo trovi, e mettere i file necessari nella cartella dove c'è il forum contatti.
Prendi un normale form contatti, metti il primo pezzo di codice all'inizio del tuo file e al posto di TUTTO OK metti il codice per mandare l'email.
Nel form invece deve solo inserire il secondo pezzo di codice.
-
Ok, provo....intanto grazie infinite.
-
Ciao..
Ho provato a seguire questa procedura per cercare di sistemare il form usando la classe Jax Captcha Class. Ho scaricato il file zippato e ho messo nel server i due file class.captcha.php e captcha_image.php.
Dopodiché ho preso il form e l?ho compilato come suggerito nel seguente modo:<td align="left" valign="top" bgcolor="#FFFFFF" class="body_white"><form action="invioform.php" method="post" enctype="multipart/form-data" name="form1" id="form1">
<table width="100%" border="0" cellspacing="2" cellpadding="0">
<tr>
<th colspan="2" class="form_character" scope="col"><label>
<div align="left">Ditta<br />
<input name="ditta" type="text" id="Ditta" size="60" />
</div>
</label></th>
</tr>
<tr>
<td width="50%" height="50" class="form_character"><label>
<div align="left">Nome e Cognome <br />
<input name="nome" type="text" id="nome" size="30" />
</div>
</label></td>
<td width="50%" height="50" class="form_character"><label></label></td>
</tr>
<tr>
?
<tr valign=top>
<td nowrap><b>Codice di controllo</b></td>
<td>
<img src="captcha_image.php?img=<?=$pic_url?>"><br>
Il codice qui sopra è <input type="text" name="password" class=casella size=5></td>
</tr>E ho compilato anche il file invioform.php che viene richiamato alla richiesta d?invio del form:
<?php
require_once( 'class.captcha.php' );
if (empty($_GET['session_code'])) $session_code = md5(round(rand(0,40000)));
else $session_code=$_GET['session_code'];
$my_captcha = new captcha( $session_code, 'tmp' );
if($password!="" AND $my_captcha->verify($password)) {"Ditta:$_POST[ditta] <br>";
"Nome e cognome: $_POST[nome] <br>";
"Indirizzo: $_POST[indirizzo] <br>";
"Cap: $_POST[cap] <br>";
"Prov.: $_POST[prov] <br>";
"E-mail: $_POST[mail] <br>";
"Tel: $_POST[tel] <br>";
"Fax: $_POST[fax] <br>";
"Commenti: $_POST[area_testo] <br>";$messaggio="Ciao ***, hai ricevuto un messaggio di contatto da parte di:
$_POST[nome], con residenza in $_POST[indirizzo],$_POST[cap],$_POST[localita],$_POST[prov],\n
Telefono: $_POST[tel],\n
Fax: $_POST[fax],\nCiò che richiede: $_POST[area_testo]";
mail("info@****.com","Messaggio inviato da: $_POST[nome]","$_POST[email]","$messaggio");
}else echo "Codice di controllo errato";
}
$pic_url = $my_captcha->get_pic( 4 );
?>Tutto questo però non ha dato il risultato sperato?mi da errore?.sniff?..sapete aiutarmi per favore?Dove sbaglio?:(:():
Grazieeee??ciao..
-
Nel mio esempio il file con il modulo e quello che invia la email erano gli stessi, nel tuo caso che sono 2 diversi devi mettere quella parte iniziale (require_once( 'class.captcha.php' ); eccetera) in alto a entrambe le pagine.
Inoltre devi passare il session_code via GET dal form alla pagina successiva, se non ricordo male c'era anche un esempio quando l'ho scaricato l'ultima volta.
-
Niente da fare...
<?php
require_once( 'class.captcha.php' );
if (empty($_GET['session_code'])) $session_code = md5(round(rand(0,40000)));
else $session_code=$_GET['session_code'];
$my_captcha = new captcha( $session_code, 'tmp' );
if($password!="" AND $my_captcha->verify($password)) ?>
<td align="left" valign="top" bgcolor="#FFFFFF" class="body_white"><form action="invioform.php" method="get" enctype="multipart/form-data" name="form1" id="form1">
<table width="100%" border="0" cellspacing="2" cellpadding="0">
<tr>
<th colspan="2" class="form_character" scope="col"><label>
<div align="left">Ditta<br />
<input name="ditta" type="text" id="Ditta" size="60" />
</div>
</label></th>
</tr>
<tr>
<td width="50%" height="50" class="form_character"><label>
<div align="left">Nome e Cognome <br />
<input name="nome" type="text" id="nome" size="30" />
</div>
</label></td>
<td width="50%" height="50" class="form_character"><label></label></td>
</tr>
<tr>
<td width="50%" height="50" class="form_character"><label>
<div align="left">Indirizzo<br />
<input name="indirizzo" type="text" id="indirizzo" size="30" />
</div>
</label></td>
<td width="50%" height="50" class="form_character"><label>
<div align="left">C.A.P. <br />
<input name="cap" type="text" id="cap" size="10" />
</div>
</label></td>
</tr>
<tr>
<td width="50%" height="50" class="form_character"><div align="left">Località<br />
<input name="localita" type="text" id="localita" size="30" />
</div></td>
<td width="50%" height="50" class="form_character"><label>
<div align="left">Provincia<br />
<input name="prov" type="text" id="prov" size="5" />
</div>
</label></td>
</tr>
<tr>
<td width="50%" height="23" class="form_character"><div align="left">E-mail (*)<br />
<input name="email" type="text" id="email" size="30" />
</div></td>
<td width="50%" class="form_character"><table width="100%" border="0" cellspacing="2" cellpadding="0">
<tr>
<th width="50%" height="30" align="left" valign="top" class="form_character" scope="col"><label>
<div align="left">Telefono<br />
<input name="tel" type="text" id="Tel" size="20" />
</div>
</label></th>
<th height="30" valign="top" class="form_character" scope="col"><label class="form_character">
<div align="left">Fax
<input name="fax" type="text" id="Fax" size="20" />
</div>
</label></th>
</tr>
</table></td>
</tr>
<tr>
<td height="23" colspan="2" class="form_character"> </td>
</tr>
<tr>
<td height="50" colspan="2" class="form_character"><label>Scrivete qui eventuali dubbi o domande<br />
<textarea name="area_testo" cols="70" id="area_testo"></textarea>
</label></td>
</tr>
</table>
<label><tr valign=top>
<td nowrap><b>Codice di controllo</b></td>
<td>
<img src="captcha_image.php?img=<?=$pic_url?>"><br>
Il codice qui sopra è <input type="text" name="password" class=casella size=5></td>
</tr></label>
<table width="100%" border="0" cellspacing="2" cellpadding="0">
<tr>
<th height="100" class="form_character" scope="col"><b>Garanzia
di riservatezza: Informativa ex articolo 10 legge
675/96.</b><br />
I suoi dati personali sono trattati in
forma automatizzata al solo fine di prestare il servizio
in oggetto con modalità strettamente necessarie a tale
scopo. Il conferimento dei dati è facoltativo: in
mancanza, tuttavia, non potremo dar corso al servizio. I
dati non saranno divulgati.</script> </th> </tr> <tr valign=top> </table> <p> <label> <input name="submit" type="submit" value=" Invia " /> </label> <label> <input type="reset" name="Reset" value=" Cancella " /> </label> </p> </form></td> </tr>
<?php
require_once( 'class.captcha.php' );
if (empty($_GET['session_code'])) $session_code = md5(round(rand(0,40000)));
else $session_code=$_GET['session_code'];
$my_captcha = new captcha( $session_code, 'tmp' );
if($password!="" AND $my_captcha->verify($password))"Ditta:$_POST[ditta] <br>";
"Nome e cognome: $_POST[nome] <br>";
"Indirizzo: $_POST[indirizzo] <br>";
"Cap: $_POST[cap] <br>";
"Prov.: $_POST[prov] <br>";
"E-mail: $_POST[mail] <br>";
"Tel: $_POST[tel] <br>";
"Fax: $_POST[fax] <br>";
"Commenti: $_POST[area_testo] <br>";
include "audit.php";if (audit()) {
// Visitor entered correct number
}
else {
// Wrong number
}
$messaggio="Ciao ***, hai ricevuto un messaggio di contatto da parte di:
$_POST[nome], con residenza in $_POST[indirizzo],$_POST[cap],$_POST[localita],$_POST[prov],\n
Telefono: $_POST[tel],\n
Fax: $_POST[fax],\nCiò che richiede: $_POST[area_testo]";
mail("info@***.it","Messaggio inviato da: $_POST[nome]","$_POST[email]","$messaggio");
?>
...non so dove sbattere la testa raga....please help!!
-
Sì ma il codice non devi solo copiarlo alla cieca, devi anche un minimo capirlo. Non vedi che c'è in entrambe le pagine un $_GET['session_code'] ma non passi la variabile in nessun modo?
Devi mettere nella prima <form action="invioform.php?session_code=<?=$session_code?>"