• User

    Formmail con spamming ...aiuto

    Ciao a tutti,
    mi ritrovo con una gran bella rogna. Ho fatto un formmail che posto di seguito. Funziona alla grande, talmente bene che mi stanno riempiendo di spam da parte di Apache. Non so cosa fare, mi hanno consigliato di utilizzare la classe phpmailer ma non capisco come possa essere implementata al formmail. Qualcuno sa aiutarmi? Magari se avete altri suggerimenti su tecniche alternative o su come si implementano i due ve ne sarei grato.

    Ecco il form attuale e fallato:

    <?php

    "Ditta:$_POST[ditta] <br>";
    "Nome e cognome: $_POST[nome] <br>";
    "Tipologia di mappa: $_POST[mappe] <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>";

    $messaggio="Ciao ****, hai ricevuto un'ordinazione per una mappa da parte di:
    $_POST[nome], con residenza in $_POST[indirizzo],$_POST[cap],$_POST[localita],$_POST[prov],\n
    Telefono: $_POST[tel],\n
    Fax: $_POST[fax],\n

    Ha richiesto la seguente mappa: $_POST[mappe]";

    mail("info@*******","Ordinazione inviata da: $_POST[nome]","$_POST[email]","$messaggio");

    ?>

    grazie a tutti..


  • User Attivo

    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.


  • User

    Intendi un captcha?


  • User Attivo

    Sì, io mi trovo bene con "Jax Captcha Class". E' un po' rompiscatole perchè è case sentitive, ma funziona alla grande.


  • User Attivo

    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


  • User Attivo

    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". 🙂


  • User Attivo

    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


  • Super User

    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!


  • User

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


  • User Attivo

    TI consiglio "Jax Captcha Class". E' composto solo da un paio di file.
    In alto nel tuo file metti

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

  • User

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


  • User Attivo

    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.


  • User

    Ok, provo....intanto grazie infinite.


  • User

    Ciao..:ciauz:

    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],\n

    Ciò 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..


  • User Attivo

    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.


  • User

    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],\n

    Ciò 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!!


  • User Attivo

    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?>"