html - php problema di captcha

martìn91

Utente Attivo
14
0
OS
Linux
Salve a tutti, sono un novellino di codici html e php, mi sono dilettato nella creazione di un sito e ho riscontrato il mio problema principale nel rendere sicuro un form di comunicazione con il captcha... Sono riuscito a far comparire l'immagine, ma non riesco ad impostare il controllo del codice...

Questo è il form utilizzato:
Codice:
        <form name="modulo" method="post" action="inviamail.php">

<div align="center">
            <table border="0">
              <tbody><tr>
                <td align="right"><small><strong><font color="#000000" face="Verdana">
                  Nome e Cognome:&nbsp; <br>
</font></strong></small></td>
                <td><input name="nome" size="28" type="text"></td>
              </tr>
              <tr>
                <td align="right"><small><strong><font color="#000000" face="Verdana">
                  E-Mail:&nbsp; <br>
</font></strong></small></td>
                <td><input name="email" size="28" type="text"></td>
              </tr>
              <tr>
                <td align="right"><small><font color="#000000" face="Verdana"><strong>Indirizzo:&nbsp; <br>
</strong></font></small></td>
                <td><input name="indirizzo" size="28" type="text"></td>
              </tr>
              <tr>
                <td align="right"><small><font color="#000000" face="Verdana"><strong>Città:&nbsp; <br>
</strong></font></small></td>
                <td><input name="citta" size="28" type="text"></td>
              </tr>
            </tbody></table>
            <table border="0">
            <tbody><tr>
              <td align="center"><font color="#000000" face="Verdana"><small><br>
              <strong>Informazioni aggiuntive (facoltativo):</strong><br>
              <textarea name="note" rows="3" cols="38">
</textarea> </small></font></td>
            </tr>
            <tr>
              <td align="center">&nbsp;
                <p><br>
                <font face="Verdana" size="2"><b>Autorizzo al trattamento dei dati personali per le finalità di cui al d.lgs. 196/03:<br> &nbsp;&nbsp; SI <input name="trattamento_dati" value="accetto" type="radio"> &nbsp; 
NO <input name="trattamento_dati" value="non_accetto" checked="checked" type="radio"></b></font></p></td>
       </tr>
          </tbody></table>
 <?php
          require_once('recaptchalib.php');
          $publickey = "6LdQusYSAAAAAA2i953Cu6jRXTsOLdSXHB8OZ16X"; // you got this from the signup page
          echo recaptcha_get_html($publickey);
        ?>

          </div><p>&nbsp;<br><font color="#000000" face="Arial">
<input value="Invia" type="submit"> <br>
          <br>
          </font></p>
        </form>
Per l'invio delle e-mails uso questo:
inviamail.php
Codice:
<?php 
$email=$_POST['email']; 
 
####################################### 
#     IMPOSTAZIONI DA CONFIGURARE     # 
####################################### 
 
//(1) indirizzo email del destinatario del modulo 
$destinatario = "mia@email"; 
 
//(2) indirizzo email del mittente, campo FROM 
//    non toccare se desiderate che l'indirizzo email inserito nel modulo sia 
//    riportato nel campo DA del messaggio che sarà ricevuto. 
//    Se invece desiderate un campo fisso annullare la prima riga e abilitare 
//    la seconda inserendo la dicitura desiderata (per annullare mettere // 
//    all'inizio della prima riga e per abilitare togliere // dalla seconda riga) 
$nome_mittente = "$email"; 
// $nome_mittente = "Dal Modulo"; 
 
//(3) oggetto del messaggio 
$oggetto_email = "messaggio"; 
 
//(4) se si vogliono rendere tutti i campi NON OBBLIGATORI impostare su "y". 
//    (valori possibili: "y" e "n") 
$all_free = "n"; 
 
//(5) se avete messo "n" al punto (4) inserire tra virgolette, separati 
//    da virgola, i nomi dei campi da rendere OBBLIGATORI 
//    Esempio: $campi_req = array("nome","telefono","via"); 
$campi_req = array("nome","email","indirizzo","citta"); 
 
//(6) controllo validità del campo email. (valori possibili: "y" e "n") 
$obbligo_email = "y"; 
 
//(7) obbligare l'utente ad accettare le condizioni. 
//    (valori possibili: "y" e "n") 
$accetta_condizioni = "y"; 
 
//(8) URL della pagina di ringraziamento 
$pagina_grazie = "ok.html"; 
 
//(9) URL della pagina errore campi vuoti 
$pagina_error_empty = "errore.html"; 
 
//(10) URL della pagina errore email 
$pagina_error_email = "errore.html"; 
 
//(11) URL della pagina errore condizioni non accettate 
$pagina_error_condizioni = "errore.html"; 
 
//(12) URL della pagina errore invio non autorizzato (mancanza di referer) 
$pagina_error_referer = "errore.html"; 
 
####################################### 
#  FINE IMPOSTAZIONI DA CONFIGURARE   # 
####################################### 
 
//ora e data 
$ora = date ("H:i:s");  
$data = date ("d/m/Y"); 
 
//intestazione email che arriva al destinatario 
$corpo = " 
Modulo inviato il $data alle ore $ora 
Riepilogo dati:\n\n"; 
 
//============== NON TOCCARE NULLA OLTRE QUESTA RIGA ==================\ 
 
 
########### CODICI ########### 
 
//variabili per rendere lo script compatibile anche con la versione PHP 4.2 e maggiori 
if(!isset($_SERVER) OR !$_SERVER OR !is_array($_SERVER) OR count(array_diff($_SERVER, $HTTP_SERVER_VARS))){   
$_POST = &$HTTP_POST_VARS;  
} 
 
//prende IP ADDRESS 
if(isset($_SERVER["HTTP_X_FORWARDED_FOR"])){ 
     
    if ($_SERVER["HTTP_X_FORWARDED_FOR"] == "") { 
 
$ipnumb = getenv("REMOTE_ADDR"); 
 
        }else { 
 
$ipnumb = getenv("HTTP_X_FORWARDED_FOR"); 
 
            } 
 
        } else { 
 
$ipnumb = getenv("REMOTE_ADDR"); 
        } 
################################### 
 
//controllo referer 
if(empty($_SERVER["HTTP_REFERER"])){ 
 
    header ("Location: $pagina_error_referer"); 
    exit(); 
     
    } 
 
########### CONTROLLO DEI CAMPI ########### 
$control_campi = 0; 
 
if($all_free != "y"){ 
 
    foreach($_POST as $key => $valore){ 
 
        if(in_array($key,$campi_req)){ 
 
            if(trim($valore) == ""){ 
 
            $control_campi++; 
             
                                    }  
 
                                } 
 
                            } 
 
                        } else { 
 
            $control_campi = 0;     
 
                                }                     
 
########### CONTROLLO EMAIL ########### 
$control_email = 0; 
 
if($obbligo_email == "y"){ 
 
    if(isset($_POST['email'])){ 
 
        if(!eregi("^([a-zA-Z0-9_.-])+@(([a-zA-Z0-9_-])+.)+[a-z]{2,6}$", $_POST['email'])){ 
 
        $control_email++; 
 
                            } 
 
                        } else { 
 
        $control_email = 0; 
 
                            } 
 
                        } 
 
########### CONTROLLO CONDIZIONI ########### 
$control_condizioni = 0; 
 
if($accetta_condizioni == "y"){ 
 
    if(isset($_POST['trattamento_dati']) && $_POST['trattamento_dati'] == "accetto"){ 
 
        $control_condizioni = 0; 
 
            } else { 
 
        $control_condizioni ++; 
 
            } 
 
        } 
 
########### INVIO EMAIL ########### 
if($control_campi == 0){ 
 
        if($control_email == 0){ 
 
            if($control_condizioni == 0){ 
 
foreach($_POST as $key => $valore){ 
 
$key = ucfirst(stripslashes(trim($key))); 
$valore = stripslashes(trim($valore)); 
$key = str_replace("_"," ",$key); 
 
            if(trim($valore) == "") $valore = "Non compilato"; 
             
                $corpo .= $key .": ". $valore ."\n\n"; 
 
            } 
             
                $corpo .= "Numero IP: $ipnumb"."\n"; 
 
$corpo .= "____________________________________________________________ \n\n 
 
"; 
 
     
// invio e-mail 
// Header Mail 
$headmail.="From: $nome_mittente <$nome_mittente>\n"; 
$headmail.="Return-Path: $nome_mittente\n"; 
$headmail.="User-Agent: Php Mail Function\n"; 
$headmail.="X-Accept-Language: en-us, en\n"; 
$headmail.="MIME-Version: 1.0\n"; 
$headmail.="X-Priority: 1 (Highest)\n"; 
$headmail.="Content-Type: text/plain; charset=ISO-8859-1; format=flowed\n"; 
$headmail.="Content-Transfer-Encoding: 7bit\n"; 
 
ini_set('sendmail_from', "$destinatario"); 
mail("$destinatario", "$oggetto_email", "$corpo", "$headmail"); 
 
                header ("Location: $pagina_grazie"); 
 
                                } else { 
 
                header ("Location: $pagina_error_condizioni"); 
 
                            } 
 
                        } else { 
 
                header ("Location: $pagina_error_email"); 
 
                        } 
 
                    } else { 
 
                     
                header ("Location: $pagina_error_empty"); 
 
                    } 
 
?>
e per quanto riguarda la verifica del captcha uso:
verify.php:
Codice:
 <?php
  require_once('recaptchalib.php');
  $privatekey = "privato codice";
  $resp = recaptcha_check_answer ($privatekey,
                                $_SERVER["REMOTE_ADDR"],
                                $_POST["recaptcha_challenge_field"],
                                $_POST["recaptcha_response_field"]);

  if (!$resp->is_valid) {
    // What happens when the CAPTCHA was entered incorrectly
    die ("The reCAPTCHA wasn't entered correctly. Go back and try it again." .
         "(reCAPTCHA said: " . $resp->error . ")");
  } else {
    // Your code here to handle a successful verification
  }
  ?>
Ma non saprei da che punto incominciare a dire al file inviamail.php di effettuare l'invio solo se il codice captcha immesso è esatto... (attualmente è solo un'immagine interattiva che non ha nessuna utilità quindi le mails mi vengono recapitate anche senza codice captcha esatto...)
Se qualcuno può aiutarmi gliene sarei grato! :help:
 

Entra

oppure Accedi utilizzando

Discussioni Simili