Ver Mensaje Individual
  #3 (permalink)  
Antiguo 23/01/2012, 19:45
Avatar de catpaw
catpaw
 
Fecha de Ingreso: mayo-2010
Ubicación: xalapa
Mensajes: 856
Antigüedad: 13 años, 11 meses
Puntos: 23
Respuesta: captcha dentro de modal al presionar submit

Ya logre lo que quería ahí les va:

para que muestre el captcha automáticamente y no tener que apretar algún botón, simple y sencillamente se pone entre etiquetas script la función. Así quedo mi pagina publicar.php

Código HTML:
<!--entre las etiquetas head-->
<script type="text/javascript" src="http://www.google.com/recaptcha/api/js/recaptcha_ajax.js"></script>
<script type="text/javascript">
	function showRecaptcha(element) {
    	Recaptcha.create("public_key", "recaptcha_div", {
        theme: "white",
        callback: Recaptcha.focus_response_field
	});
    }
</script>

<!--termina el head y en el body el formulario y dentro del div el espacio para el captcha-->

<div id="recaptcha_div"><script>showRecaptcha();</script></div>

<!--el botón que ejecutara la función que validara todo el form incluyendo el captcha-->

<input type="button" id="enviar" value="Enviar" onclick="procesar('recaptcha_div');" /> 
ok lo que sigue la función que va a validar el código, pagina procesar.js

Código:
function ajaxFunction(){
  //funcion necesaria
}
function procesar(capa){

	var desafio = Recaptcha.get_challenge();
	var solucion = Recaptcha.get_response();
	
	var ajax;
    ajax= ajaxFunction();
    ajax.open("GET", "../ruta/procesar.php?recaptcha_challenge_field="+desafio+"&recaptcha_response_field="+solucion, true);
	
    ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    ajax.onreadystatechange = function() {
		
		if (ajax.readyState == 1){
			document.getElementById(capa).innerHTML= "<center><img src='../ruta/loader.gif' alt='Procesando'><br><br> Espere por favor...</center>";
		}
		if (ajax.readyState == 4){
			var respuesta = ajax.responseText;
			if (respuesta.length == 0 || respuesta == null || respuesta == 'undefined') {                   
				alert("Error en la validación del captcha");
			} 		   
			if(respuesta=="Incorrecto") {
				alert("Error en la validación del captcha");
				Recaptcha.reload();
			}
			if(respuesta=="correcto") {
				alert("validación del captcha correcta");
				document.getElementById(capa).innerHTML= ajax.responseText;
			}
		}
	}
	ajax.send(null);
}
ahora el procesar.php:

Código PHP:
<?php
  
require_once('recaptchalib.php');
  
$privatekey "private_key";
  
  
$resp recaptcha_check_answer ($privatekey,
                                
$_SERVER["REMOTE_ADDR"],
                                
$_GET["recaptcha_challenge_field"],
                                
$_GET["recaptcha_response_field"]);
  if(!
$resp->is_valid){
    echo 
"Incorrecto";
  }
  else{
    echo 
"Correcto";
  }
?>
Y ahi esta para el que necesite :D

Una observación muy particular, la verdad es que forer@s ahora si me fallaron ya que ni una respuesta, mínimo un estas loca eso no se puede, o mira vas bien pero aquí muevele o lee esto o lo que sea, la verdad es que si se siente feo contestarse uno mismo, pero bueno ya quedo y aprendí que es lo importante.

Saludos!!