- Home
- Categorie
- Coding e Sistemistica
- Coding
- Inserire codice captcha in form
- 
							
							
							
							
							
Inserire codice captcha in formBuongiorno 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....  grazie a tutti in anticipo 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]
 
- 
							
							
							
							
							
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. 
 
- 
							
							
							
							
							
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/