PHP: Implementar ReCaptcha facilmente… [Parte 2]

Seguimos con la segunda parte de Implementar ReCaptcha fácilmente, si llegaste desde Google hasta aquí, te recomiendo que leas la primera parte http://www.zarpele.com.ar/2009/10/php-implementar-recaptcha-facilmente-parte-1/

Implementación

Que vamos a implementar?, vamos a hacer un pequeño formulario de contacto, con nombre, asunto, y texto.
Para ello tenemos documentación en recaptcha.net, una wiki y un foro.

Vale la pena aclarar, que la implementación que vamos a realizar es pura en PHP sin utilizar ningún CMS de por medio. Si utilizas algún CMS como Wordpress o phpBB podes bajarte algún plugin para facilitar la implementación.

Ahora para realizar lo dicho anteriormente tenemos que Descargar librerías necesarias desde re-captcha.net, que se conectan con el site y validan el captcha…

1
2
3
 require_once('recaptchalib.php');
 $publickey = "your_public_key"; // nuestra clave publica, ojo con los espacios...
 echo recaptcha_get_html($publickey);

Debemos incluir dentro de nuestro formulario el siguiente codigo en php, donde $publickey es la clave publica que nos dieron al principio, en este caso la nuestra es:
6Ldf2wgAAAAAAGo7WRwiheGTwKEFIs5DiTmxzNQK

Nuestro formulario quedaría mas o menos así…

contacto.php

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
  <!-- tu codigo HTML -->
 <form method="post" action="verificarContacto.php">
    <table align="center" width="50%" >
        <tr><td style="padding-top:6px">Nombre: </td><td style="padding-top:6px"><input size="15"  name="nombre"></td></tr>
        <tr><td style="padding-top:6px">Asunto: </td><td style="padding-top:6px"><input size="30"  name="asunto"></td></tr>
        <tr><td style="padding-top:6px">Mensaje: </td><td style="padding-top:6px"><textareaname="mensaje" cols="40" rows="5" size="30"></textarea></td>        
</tr>
<tr><td style="padding-top:6px"></td><td style="padding-top:6px"><?php
require_once('recaptchalib.php');
$publickey = "6Ldf2wgAAAAAAGo7WRwiheGTwKEFIs5DiTmxzNQK"; // Este es nuestra clave publica
echo recaptcha_get_html($publickey);
?></td>
</tr>
</table>
   <input type="submit" />
 </form>
 <!-- mas de tu codigo HTML -->

Listo nuestro formulario fue impreso con el código de re-captcha, suponemos que el fichero recaptchalib.php esta en el mismo directorio que contacto.php

verificarContacto.php

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
require_once('recaptchalib.php');
//Aqui pondremos nuestra clave privada, esta la obtenemos a la hora de registrar la cuenta en re-captcha
$privatekey = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
 
           if ($_POST["recaptcha_response_field"])
        {
                $resp = recaptcha_check_answer ($privatekey,
                                                $_SERVER["REMOTE_ADDR"],
                                                $_POST["recaptcha_challenge_field"],
                                                $_POST["recaptcha_response_field"]);
 
                if ($resp->is_valid) {
                        echo 'Re-Captcha correcto...';
 
                        // El texto ingresado es valido, aquí pondremos el código de mandar mensaje...
 
                } else {
                        // El texto ingresado es invalido, informamos el error al usuario...
                        echo 'El reCAPTCHA no se ha escrito correctamente. Intentelo de nuevo.';
                }

Listo deberíamos tener todo andando, aunque faltan algunos retoques…
Nota: Se debe verificar al integridad de las demás variables, para no sufrir algún error de tipo, SQL Injection, etc.

Cambiando el Tema y el Lenguaje

Para hacer estos cambios vamos a modificar un poco las librerías que bajamos anteriormente…
Abrimos el fichero recaptchalib.php, vamos a la linea 122 reemplazaremos este fragmento de codigo…

cambiamos esto…

1
2
3
4
5
6
7
        return '<script type="text/javascript" src="'. $server . '/challenge?k=' . $pubkey . $errorpart . '"></script>
 
	<noscript>
  		<iframe src="'. $server . '/noscript?k=' . $pubkey . $errorpart . '" height="300" width="500" frameborder="0"></iframe><br/>
  		<textarea name="recaptcha_challenge_field" rows="3" cols="40"></textarea>
  		<input type="hidden" name="recaptcha_response_field" value="manual_challenge"/>
	</noscript>';

por esto…

1
2
3
4
5
6
7
8
        return '
        <script> var RecaptchaOptions = {   lang: \'es\', theme:\'white\'};</script>
        <script type="text/javascript" src="'. $server . '/challenge?k=' . $pubkey . $errorpart . '"></script>
	<noscript>
  		<iframe src="'. $server . '/noscript?k=' . $pubkey . $errorpart . '" height="300" width="500" frameborder="0"></iframe><br/>
  		<textarea name="recaptcha_challenge_field" rows="3" cols="40"></textarea>
  		<input type="hidden" name="recaptcha_response_field" value="manual_challenge"/>
	</noscript>';

Y listo tenemos un theme distinto al aburrido default y en español la interfaz, no así las palabras del captcha.
Si quieren darle mas personalidad a su captcha les recomiendo que vean esta pagina oficial en la parte Look & Feel Customization

Saludos…

  • Share/Bookmark

Puedes seguir cualquier respuesta a esta entrada mediante el canal RSS 2.0. Puedes dejar un comentario o enviar un trackback desde tu propio sitio.

Deja un comentario

XHTML: Puedes usar las siguientes etiquetas: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="">

 
Twitter RSS email