Ciao a tutti,
ho implementato il Re-Captcha su un form, e con il metodo base "paginaConCaptha.php" che passa i valori via POST a "inviaEmail.php" non ci sono problemi, il captcha viene validato e letto correttamente.
Sto ora provando a fare il tutto via Ajax, e sembra che il file PHP non riceva i valori (o Ajax non li spedisca).
Andiamo per gradi:
1 -> Pagina con il form include questo JS (ometto alcuni passaggi credo inutili)
codice:
(document).ready(function(){
$("#invia").click(function(){
//Recuperiamo tutte le variabili
var name = $("#nome").val();
var mail = $("#email").val();
var subject = $("#motivo").val();
var messaggio = $("#messaggio").val();
var challenge = $("#recaptcha_challenge_field").val();
var response = $("#recaptcha_response_field").val();
var datastr ='name=' + name + '&mail=' + mail + '&subject=' + subject + '&messaggio=' + encodeURIComponent(messaggio) + '&challenge=' + challenge + '&response=' + response;
$("#risposta").css("display", "block");
$("#risposta").css("background-color","#FFFFA0");
$("#risposta").html("Invio del messaggio in corso..");
$("#risposta").fadeIn("slow");
setTimeout("send('"+datastr+"')",2000);
});
});
//Creazione della funzione di invio. Si baserà sul nostro file php "mail.php".
function send(datastr){
$.ajax({
type: "POST",
url: "comandi.php?azione=sendEmail",
data: datastr,
cache: false,
success: function(html){
$("#risposta").fadeIn("slow");
$("#risposta").html(html);
$("#risposta").css("background-color","#e1ffc0");
setTimeout('$("#risposta").fadeOut("slow")',2000);
}
});
}
Verificando con Firebug, ho visto che la pagina trasmette correttamente un URL con encodati tutti i valori (name=blabla&mail=blabla@blabla.it&challenge=serie infinita dicodici Di Google&response=il valore della risposta al captcha)
Veniamo alla pagina che si occupa di ricevere i dati:
codice:
case 'sendEmail':
echo $_POST["name"]; // <= stampa correttamente il nome passato dal form
echo $_POST["challenge"]; <= vuota, non stampa nulla :(
echo $_POST["response"]; <= vuota, non stampa nulla :(
require_once($percorso_file_assoluto.'recaptchalib.php');
$privatekey = "miaKeyCorretta";
$resp = recaptcha_check_answer ($privatekey,
$_SERVER["REMOTE_ADDR"],
$_POST["challenge"],
$_POST["response"]);
if (!$resp->is_valid) {
// What happens when the CAPTCHA was entered incorrectly
// ovviamente KO perchè non c'è soluzione :(
die ("Il codice antispam inserito non è corretto. Riprova." .
"(Errore: " . $resp->error . ")");
} else {
echo "ok";
// Your code here to handle a successful verification
}
Come detto, ajax trasmette ANCHE challenge e response, il PHP non li riceve
mentre riceve le altre variabili concatenate 
Grazie in anticipo a chi mi helperà