salve,
ho dei problemi a creare una procedura che controlli l'esattezza di un codece captcha:
ho la pagina dei contatti dove c'è un form che al momento del submit fa partire una procedura :
validaform();
questo è il codice js:
codice:
function getXmlHttpObject()
{
var xmlHttp=null;
try
{
// Firefox, Opera 8.0+, Safari
xmlHttp=new XMLHttpRequest();
}
catch (e)
{
// Internet Explorer
try
{
xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e)
{
xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
}
}
return xmlHttp;
}
function validaform()
{
var datiEmail=document.forms[0];
var nomeCampo;
for (var i=0;i<datiEmail.length;i++)
{
nomeCampo=controllaCampo(datiEmail[i]);
if (!nomeCampo) return false;
}
}
function controllaCampo(dato)
{
var nome=new String(dato.name);
var valore=new String(dato.value);
if (nome=="_captcha")
{
if(!verificaCaptcha(valore))
{
alert("Attenzione, codice Captcha errato. Riprovare");
return false;
}
}
if (nome.charAt(0)=="_")
{
if (valore.length<=2)
{
alert("Attenzione, compilare tutti i campi obbligatori.");
return false
}
else
{
return nome.substring(1,nome.length);
}
}
else
{
return nome;
}
}
function stateChanged() {
if(xmlHttp.readyState == 4) {
//Stato OK
if (xmlHttp.status == 200) {
var resp = xmlHttp.responseText;
if (resp=="errore")
{
return false;
}
}
waiting = false;
}
}
function verificaCaptcha(valore) {
if (xmlHttp && !waiting) {
xmlHttp.open("GET", 'controllaCaptcha.php?cap=' + valore, true);
xmlHttp.onreadystatechange = stateChanged;
xmlHttp.send(null);
waiting = true;
}
}
var xmlHttp = getXmlHttpObject();
var waiting = false;
in pratica quando incontra una textbox di nome _captcha fa pertire un controllo lato server del codice che dal momento della creazione è stato salvato in una variabile di sessione. il file controllaCaptcha.php semplicemente prende via get il captcha inserito dall'utente e lo controlla con il captdcha presente nella sessione. fino a qui funziona in fatti provo a fare un alert del xmlHttp.responseText e mi scrive "errore" nel caso siano diversi e "ok" nel caso siano uguali. il problema è che anche se inserisco il captcha corretto mi appare l'alert con "Attenzione, codice Captcha errato. Riprovare". e non mi invia l'email.
dov'è l'errore?
mille grazie