Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it L'avatar di AvOJaromil
    Registrato dal
    Feb 2006
    residenza
    laddove si stagiona formaggio dentro a dei grossi buchi di tufo
    Messaggi
    549

    procedur controllo captcha

    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
    "homer sei tonto come un mulo e due volte più brutto. se uno sconosciuto ti offre un passaggio tu devi accettarlo..."

    www.flickr.com/photos/asciella/
    www.lastfm.it/user/qvaioe/

  2. #2
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    :master: senti, non ho verificato il codice, ma a naso, non utilizzerei una chiamata ajax via get, ma solo via post, dato che ci potrebbero essere problemi di cache.

    Inoltre mi assicurerei che l'immagine non vada in cache. Io ho usato per esempio:

    [img]captcha.img?captcha=<%=Guid.NewGuid.ToString([/img]" />

    Pietro

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.