• User Newbie

    Inserire codice captcha in form

    Buongiorno a tutti, poichè sono alle prime armi avrei bisogno di inserire un codice captcha all'interno di un form contatti. Qualche anima pia potrebbe cortesemente darmi una mano...sono disperato....:crying: grazie a tutti in anticipo
    allego codice del form:
    [php]
    <form method="post" action="formInvio.php">
    <input type="hidden" name="require" value="email,nominativo" />
    <input type="hidden" name="contenitore" value="[email protected]" />
    <input type="hidden" name="invia_Dati" value="REMOTE_HOST,HTTP_USER_AGENT" />
    <tr>
    <td><div align="center">
    <table width="98%" border="0" cellpadding="1" cellspacing="0" style="border-collapse: collapse">
    <tr>
    <td width="55%" height="36" valign="top" bordercolor="#FFFFFF"><p align="right" class="Stile39"><font color="#FFFFFF">Nome e Cognome </font><span class="Stile54">()</span><font color="#FFFFFF"> <br />
    </font></p></td>
    <td width="45%" bordercolor="#FFFFFF"><p align="left"><font face="Arial" size="3" color="#000000">
    <input name="nominativo" type="text" id="nominativo" style="background-color: #ffffff; border-style: solid; border-color: #000000" size="20" />
    </font></p></td>
    </tr>
    <tr>
    <td height="36" align="center" valign="top" bordercolor="#FFFFFF"><p align="right" class="Stile39"><font color="#FFFFFF">Email a cui ricevere risposta </font><span class="Stile54">(
    )</span><font color="#FFFFFF"><br />
    </font></p></td>
    <td bordercolor="#FFFFFF"><p align="left"><font face="Arial" size="3" color="#000000">
    <input type="text" name="email" size="20" style="background-color:; border-style: solid; border-color:" />
    </font></p></td>
    </tr>
    <tr>
    <td height="36" align="center" valign="top"><p align="right"><span class="Stile49"><span class="Stile43">Indirizzo</span></span></p></td>
    <td><p align="left"><font face="Arial" size="3" color="#000000">
    <input name="indirizzo" type="text" id="indirizzo" style="background-color:; border-style: solid; border-color:" size="20" />
    </font></p></td>
    </tr>
    </form>
    [/php]
    e codice del file forminvio.php
    [php]
    <?
    /*
    formail completo, è possibile aggiungere qualunque campo
    è sufficiente inserire le due pagine in un punto qualunque
    del proprio dominio.
    by linkbruttocane
    */

    //INIZIO PARAMETRI DA SETTARE OBBLIGATORIAMENTE
    /****************************************************************************************/
    // Il parametro $delay indica i secondi di ritardo impiegati
    // a riportare l'utente all'home page dopo che abbia
    // compilato correttamente il modulo

    $delay = "5";

    // Il parametro $url indica la pagina alla quale si viene
    // rimandati una volta compilato correttamente il modulo
    // io ho messo una homepage, ma potrebbe essere qualunque altra pagina

    $url = "indirizzo pagina homepage";

    // Il parametro $provenienza indica le possibili provenienze dei dati: indicare
    // il proprio dominio nella forma mostrata dall'esempio

    $provenienza = array ();

    // Il parametro $esclusioni vi permette di NON consentire
    // messaggi da un indirizzo mail specificato
    // sia appartenente ad un dominio, ovvero
    // 'tutte le mail che appartengono ad un dominio'
    // od anche a singoli account

    $esclusioni = array ('*@quellochetipare.com', '[email protected]', '[email protected]');

    //FINE PARAMETRI DA SETTARE OBBLIGATORIAMENTE
    /****************************************************************************************/

    $email = $_POST['email'];

    $versione_form = "stabile";

    function print_error($reason,$type = 0) {
    global $versione_form;
    build_body($title, $bgcolor, $text_color, $link_color, $vlink_color, $alink_color, $style_sheet);
    if ($type == "missing") {
    ?>
    <body bgcolor='000000'>
    <p align='center'><font face='Georgia, Times New Roman, Times, serif' color='#990000' size='+2'>Il modulo non puo'
    essere inviato per le seguenti ragioni</font></p>
    <br>
    <p align='center'><font face='Georgia, Times New Roman, Times, serif' size='2' color='#990000'>
    <?
    echo $reason."\n";
    ?>
    </font>
    <p align='center'><font face='Georgia, Times New Roman, Times, serif' size='+1' color='#990000'>Premere il pulsante <input type="button" value="indietro" onClick="history.back();">
    e riprovare.</font></p>
    <?
    } else { // every other error
    ?>
    Il modulo non puo' essere inviato per le seguenti ragioni:<p align='center'>
    <?
    }
    echo "<br><br>\n";

    exit;
    }

    function check_banlist($esclusioni, $email) {
    if (count($esclusioni)) {
    $allow = true;
    foreach($esclusioni as $banned) {
    $temp = explode("@", $banned);
    if ($temp[0] == "*") {
    $temp2 = explode("@", $email);
    if (trim(strtolower($temp2[1])) == trim(strtolower($temp[1])))
    $allow = false;
    } else {
    if (trim(strtolower($email)) == trim(strtolower($banned)))
    $allow = false;
    }
    }
    }
    if (!$allow) {
    print_error("Stai utilizzando un <b>indirizzo email escluso.</b>");
    }
    }

    function check_referer($provenienza) {
    if (count($provenienza)) {
    $found = false;
    $temp = explode("/",getenv("HTTP_REFERER"));
    $referer = $temp[2];
    for ($x=0; $x < count($provenienza); $x++) {
    if (eregi ($provenienza[$x], $referer)) {
    $found = true;
    }
    }
    if (!getenv("HTTP_REFERER"))
    $found = false;
    if (!$found){
    print_error("Provieni da un <b>dominio non autorizzato.</b>");
    error_log("[FormMail.php] Illegal Referer. (".getenv("HTTP_REFERER").")", 0);
    }
    return $found;
    } else {
    return true; //
    }
    }
    if ($provenienza)
    check_referer($provenienza);

    if ($esclusioni)
    check_banlist($esclusioni, $email);

    function parse_form($array) {
    // build reserved keyword array
    $reserved_keys[] = "required";
    $reserved_keys[] = "redirect";
    $reserved_keys[] = "email";
    $reserved_keys[] = "require";
    $reserved_keys[] = "contenitore";
    $reserved_keys[] = "titolo";
    $reserved_keys[] = "bgcolor";
    $reserved_keys[] = "text_color";
    $reserved_keys[] = "link_color";
    $reserved_keys[] = "vlink_color";
    $reserved_keys[] = "alink_color";
    $reserved_keys[] = "title";
    $reserved_keys[] = "missing_fields_redirect";
    $reserved_keys[] = "invia_Dati";
    if (count($array)) {
    while (list($key, $val) = each($array)) {

         $reserved_violation = 0;
         for ($ri=0; $ri<count($reserved_keys); $ri++) {
            if ($key == $reserved_keys[$ri]) {
               $reserved_violation = 1;
            }
         }
      
         if ($reserved_violation != 1) {
            if (is_array($val)) {
               for ($z=0;$z<count($val);$z++) {
                  $content .= "$key: $val[$z]\n";
               }
            } else {
               $content .= "$key: $val\n";
            }
         }
      }
    

    }
    return $content;
    }

    function mail_it($content, $titolo, $email, $contenitore) {
    mail($contenitore, $titolo, $content, "From: $email\r\nReply-To: $email\r\nX-Mailer: DT_formmail");
    }

    function build_body($title, $bgcolor, $text_color, $link_color, $vlink_color, $alink_color, $style_sheet) {
    if ($style_sheet)
    echo "<LINK rel=STYLESHEET href="$style_sheet" Type="text/css">\n";
    if ($title)
    echo "<title>$title</title>\n";
    if (!$bgcolor)
    $bgcolor = "#000000";
    if (!$text_color)
    $text_color = "#80000";
    if (!$link_color)
    $link_color = "#0000FF";
    if (!$vlink_color)
    $vlink_color = "#FF0000";
    if (!$alink_color)
    $alink_color = "#000088";
    if ($background)
    $background = "background="$background"";
    echo "<body bgcolor="$bgcolor" text="$text_color" link="$link_color" vlink="$vlink_color" alink="$alink_color" $background>\n\n";
    }

    $contenitore_finale = split(',',$contenitore);
    for ($i=0;$i<count($contenitore_finale);$i++) {
    $contenitore_to_test = trim($contenitore_finale*);
    if (!eregi("^[_\.0-9a-z-]+@([0-9a-z][0-9a-z-]+\.)+[a-z]{2,3}$", $contenitore_to_test)) {
    print_error("<b>Occorre un indirizzo email valido per continuare ($contenitore_to_test) </b>");
    }
    }

    if ($required)
    $require = $required;

    if ($require) {

    $require = ereg_replace( " +", "", $require);
    $required = split(",",$require);
    for ($i=0;$i<count($required);$i++) {
    $string = trim($required*);

      if((!(${$string})) || (!(${$string}))) {
       
         if ($missing_fields_redirect) {
            header ("Location: $missing_fields_redirect");
            exit;
         }
         $require;
         $missing_field_list .= "Il campo relativo a <b>$required*</b> deve essere compilato <br>\n\n";
      }
    

    }

    if ($missing_field_list)
    print_error($missing_field_list,"missing");
    }

    if (($email) || ($EMAIL)) {
    $email = trim($email);
    if ($EMAIL)
    $email = trim($EMAIL);
    if (!eregi("^[_.0-9a-z-]+@([0-9a-z][0-9a-z-]+.)+[a-z]{2,3}$", $email)) {
    print_error("il suo <b>indirizzo email</b> non risulta essere valido");
    }
    $EMAIL = $email;
    }

    $content = parse_form($HTTP_POST_VARS);

    if ($invia_Dati) {
    $invia_Dati = ereg_replace( " +", "", $invia_Dati);
    $splitta_Dati = split(",",$invia_Dati);
    $content .= "\n------ variabili utente ------\n";
    for ($i=0;$i<count($splitta_Dati);$i++) {
    $string = trim($splitta_Dati*);
    if ($splitta_Dati* == "REMOTE_HOST")
    $content .= "REMOTE HOST: ".$REMOTE_HOST."\n";
    else if ($splitta_Dati* == "REMOTE_USER")
    $content .= "REMOTE USER: ". $REMOTE_USER."\n";
    else if ($splitta_Dati* == "REMOTE_ADDR")
    $content .= "REMOTE ADDR: ". $REMOTE_ADDR."\n";
    else if ($splitta_Dati* == "HTTP_USER_AGENT")
    $content .= "BROWSER: ". $HTTP_USER_AGENT."\n";
    }
    }

    if (!$titolo)
    $titolo = "Modulo dal sito";

    mail_it(stripslashes($content), stripslashes($titolo), $email, $contenitore);

    if ($redirect) {
    header ("Location: $redirect");
    exit;
    } else {
    print "<body bgcolor='#000000'>

    <p align='center'><font face='Georgia' size='4' color='#800000'>Grazie per averci
    contattato.</font></p><p align='center'><font face='Georgia' size='4' color='#800000'>Riceverete
    risposta all'indirizzo da voi indicato $email<br><br>...Ritorno automatico alla Home page in corso....</font></p><meta http-equiv='refresh' content='$delay; url=$url'>

    <p align='center'> </p>

    </body>
    ";
    echo "<br><br>\n";

    exit;
    }

    // <---------- fine ----------> //
    ?>[/php]


  • Super User

    Devi usare le librerie gd per generare l'immagine con un testo casuale, tempo fa ne avevo sviluppato uno, non è niente di complicato, basilarmente generi una combinazione random alfanumerica, la salvi nella sessione e la fai stampare da una pagina .php con le gd. Dopo il form il controllo lo fai tra il campo del form e la variabile nella sessione.


  • User Attivo

    Di captcha non me ne intendo per nulla, però conoscendolo credo che il reCaptcha sia una soluzione utile al tuo caso.
    Lo puoi trovare qui: http://recaptcha.net/plugins/php/