Foros del Web » Programando para Internet » Javascript » Frameworks JS »

Recaptcha - ¿Cómo saber si el usuario escribió correctamente las palabras?

Estas en el tema de Recaptcha - ¿Cómo saber si el usuario escribió correctamente las palabras? en el foro de Frameworks JS en Foros del Web. Saludos foreros y foreras. Estoy terminando de hacer un formulario. Utilizo Javascript para validar cada campo y Ajax para enviar el Form. Todo aqui normal. ...
  #1 (permalink)  
Antiguo 10/03/2011, 11:15
Avatar de ghidalgoram  
Fecha de Ingreso: marzo-2008
Ubicación: Costa Rica
Mensajes: 444
Antigüedad: 11 años, 8 meses
Puntos: 7
Pregunta Recaptcha - ¿Cómo saber si el usuario escribió correctamente las palabras?

Saludos foreros y foreras.

Estoy terminando de hacer un formulario. Utilizo Javascript para validar cada campo y Ajax para enviar el Form. Todo aqui normal.


Se me ocurrió, usar un Recaptcha. Lo estoy usando con "AJAX API". Casi todo funciona perfecto. Estoy aprendiendo a usarlo y estoy estudiando la manera de manipularlo.

El problema.
No se como hacer para que después de que el usuario de click en el botón "Enviar" del formulario, verificar si el usuario digitó correctamente las dos palabras que aparecen en la imagen. Por ahi, leí que existe métodos como el que sirve para limpiar el "Recaptcha" como:

Código Javascript:
Ver original
  1. Recaptcha.reload

Pero no he encontrado algo para verificar si se escribió bien ó mal las palabras.

En mi caso, necesito saber si existe algo como esto (esto es soloo un ejemplo para transmitir la idea de lo que necesito):

Código Javascript:
Ver original
  1. var respuesta = "";// Respuesta de si ó no se digitó correctamente las palabras.
  2.  
  3. respuesta = Recaptcha.respuesta_correcta; // Es la función que busco ó algo similar
  4.  
  5. if(respuesta == 1)
  6. {
  7.    // Código Ajax para enviar el formulario
  8. }
  9. else
  10. {
  11.  Recaptcha.reload();
  12. }


He leído que existen otros métodos como:
Código Javascript:
Ver original
  1. get_challenge()

y

Código Javascript:
Ver original
  1. get_response()

Hasta donde entiendo, son los métodos que contienen los datos de lo que digitó el usuario y las palabras que aparecen en la imagen, pero no sé si existe alguna variación ?

Agradezco su ayuda,
Saludos.
__________________
Loading...
  #2 (permalink)  
Antiguo 10/03/2011, 12:06
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 11 años, 3 meses
Puntos: 1532
Respuesta: Recaptcha - ¿Cómo saber si el usuario escribió correctamente las palabras?

aunque me parece inútil saber desde js si el captcha fue bueno o no, puedes implementar una llamada via ajax en donde envíes lo digitado por el usuario más los hash que crea el recaptcha (más bien el form completo), haces la validación en el servidor (como debe ser) y que te devuelva el resultado, así de simple
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #3 (permalink)  
Antiguo 10/03/2011, 12:17
Avatar de ghidalgoram  
Fecha de Ingreso: marzo-2008
Ubicación: Costa Rica
Mensajes: 444
Antigüedad: 11 años, 8 meses
Puntos: 7
De acuerdo Respuesta: Recaptcha - ¿Cómo saber si el usuario escribió correctamente las palabras?

Hola maycolalvarez Gracias por tu respuesta.

En realidad, esa es mi segunda opción, utilizando PHP pero me pareció esta primera opción (la de 'AJAX API') cómo más rápida y me imaginé que existía alguna función que retornara si fué ó no exitosa el Captcha.

Voy a implementar esta opción que me sugieres.
Gracias
saludos
__________________
Loading...
  #4 (permalink)  
Antiguo 11/03/2011, 16:57
Avatar de ghidalgoram  
Fecha de Ingreso: marzo-2008
Ubicación: Costa Rica
Mensajes: 444
Antigüedad: 11 años, 8 meses
Puntos: 7
De acuerdo Respuesta: Recaptcha - ¿Cómo saber si el usuario escribió correctamente las palabras?

Hola maycolalvarez y foreros.

Les agradezco si me ayudan con una duda de Ajax. De Ajax, no soy experto.

Ya realicé la comprobación mediante Ajax. Es decir, por medio de Ajax, envió las dos variables que usa el Recaptcha [Recaptcha.get_response() y Recaptcha.get_challenge() ] y ya puedo saber si el usuario digitó bien ó mal las palabras. El Recaptcha se valida en el Server y devuelve por medio de Ajax la respuesta de bien ó mal. El resultado bien ó mal lo asigno a una variable Javascript. Con esta variable que digamos que se llame resultado, es la que indica si la ejecución del Form sigue ó se detiene para se digite de nuevo las palabras del Recaptcha.

Código Javascript:
Ver original
  1. var resultado = "";

Te comento que antes de que se ocurriera usar Recaptcha, yo ya estaba usando Ajax para enviar los campos de Formulario y mostrar un mensaje de "Enviando Datos....".

Ahora con el Recaptcha tuve que agregar otra función de Ajax para conectar con un archivo PHP. Les voy agregar el código:


Código Javascript:
Ver original
  1. function send_form_data()
  2. {
  3.   // Usos 2 ajaxobj.open.
  4.         // 1. Para averiguar el resultado del Recaptcha
  5.         // 2. Para enviar el formulario.
  6.  
  7.   //resp_captcha=Recaptcha.get_challenge();
  8.         nocache = Math.random();// Set te random number to add to URL request
  9.  
  10.         //1. Averiguar el resultado del Recaptcha
  11.         var param = "recaptcha_challenge_field="+Recaptcha.get_challenge()+"&recaptcha_response_field="+Recaptcha.get_response()+"&resp_captcha="+resp_captcha;
  12.  
  13.         var ruta_recaptcha="recaptcha_respuesta.php";// Aqui valido el Recaptcha y me indica si la respuesta es satisfactoria ó no se escribió bien.
  14.         var url_proc_form = ruta_recaptcha+'?nocache='+nocache;
  15.         ajaxobj.open('POST',url_proc_form,true);
  16.         ajaxobj.onreadystatechange=function(){
  17.             if(ajaxobj.readyState==4)
  18.             {
  19.               window.respuesta=ajaxobj.responseText;
  20.             }
  21.         }
  22.  
  23.         ajaxobj.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
  24.         ajaxobj.send(param);// Con POST paso variables y con GET pongo NULL
  25.  
  26. //Hasta aqui termina el código para saber el resultado del Recaptcha

Y aqui empiezo con el segundo "ajaxobj.open('POST',url_proc_form,true);" para enviar los datos en la misma funcion " send_form_data()".



Código Javascript:
Ver original
  1. // Aquí empiezo validar todo el Formulario y que esté muy bien.
  2. //Aqui uso el segundo 'ajaxobj.open()'
  3.  
  4.  //Empiezo a validar cada campo del Form.
  5.     if(document.getElementById('campo1').value == "")
  6.     {
  7.         //acciones, no continua la ejecución del Formulario
  8.  }
  9.     else
  10.     if(document.getElementById('campo1').value == "")
  11.     {
  12.         //acciones, no continua la ejecución del Formulario
  13.  }
  14.     else
  15.     //
  16.     if(typeof(window.respuesta) == "undefined" || window.respuesta == 'Error, please try again.')
  17.     {
  18.         //acciones, no continua la ejecución del Formulario    
  19.         Recaptcha.reload();
  20.     }
  21.     else
  22.     { // Se envia el formulario, Segunda conexión de Ajax.
  23.         var campo1 = encodeURI(document.getElementById('campo1').value);
  24.         var campo2 = encodeURI(document.getElementById('campo2').value);
  25.    
  26.         nocache = Math.random();// Set te random number to add to URL request
  27.         // Paso var con POST
  28.         var param = 'campo1='+campo1+'&campo2='+campo2;
  29.        
  30.         var url_proc_form = "contact_form.php"; //Donde se envia x correo el form
  31.         ajaxobj.open('POST',url_proc_form,true);
  32.         ajaxobj.onreadystatechange=procesando_datos_msje;
  33.         ajaxobj.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
  34.         ajaxobj.send(param);
  35.     }
  36.  
  37.         if(error_form_field[0]!=""){// si hay error en el form, muestra msje de error
  38.         mostrar_msje_error(error_form_field); }
  39.        
  40. }

Si utilizo dos veces este código en una misma función,.. debo cerrar las conexiones para que no se afecten los resultados entre ellos? ó existe alguna otra recomendación ?


Código Javascript:
Ver original
  1. ajaxobj.open('POST',url_proc_form,true);
  2.         ajaxobj.onreadystatechange=procesando_datos_msje;
  3.         ajaxobj.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
  4.         ajaxobj.send(param);




Gracias.
__________________
Loading...

Etiquetas: ajax, api, recaptcha, respuesta
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 05:28.