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:
Per l'invio delle e-mails uso questo:
inviamail.php
e per quanto riguarda la verifica del captcha uso:
verify.php:
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:
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: <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: <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: <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à: <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">
<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> SI <input name="trattamento_dati" value="accetto" type="radio">
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> <br><font color="#000000" face="Arial">
<input value="Invia" type="submit"> <br>
<br>
</font></p>
</form>
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");
}
?>
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
}
?>
Se qualcuno può aiutarmi gliene sarei grato! :help: