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…
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.

