Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    387

    Recaptcha e Ajax non si passano valori

    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 &egrave; 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à

  2. #2
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    387
    Aggiungo...
    Se passo SOLO uno dei valori (o il challenge, o il response) senza altro, il PHP riceve il tutto tranquillamente.

    Evidentemente faccio un errore nell'encoding della stringa (?)

    Grazie...

  3. #3
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Non si vede solo html (no php che confonde e potrebbe celare errori) dellla pagina completo di form e cambia le variabili subject e response non so se sono parole riservate, ma meglio non rischiare
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  4. #4
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    387
    Ho risolto

    Era la e commerciale "&" convertita in "&amp;"

    grazie comunque andrea!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.