Implementando reCAPTCHA

Lunes, 4. Enero 2010

Para poder usar recaptcha necesitamos registrarnos para que nos prooporcionen una public key y una private key nos damos de alta aqui

Despues de tener las keys debemos de descargar la libreria de aqui

la incluimos en nuestro documento

1
2
3
<?php
require_once("recaptchalib.php");
?>

Debemos de utilizar la funcion “recaptcha_get_html()” para poder imprimirel captcha, en esta funcion consta de los siguientes parametrso: $publickey (proporcionada al registro), is_valid (verifica si el captcha es correcto), erro (muestra un error si no es correcto), quedaria de la siguiente manera:

1
2
3
4
<?php
$captcha = recaptcha_get_html($publickey);
echo $captcha;
?>

Para poder validar nuestro captcha haremos uso de la funcion “recaptcha_check_answer()” que es donde usaremos nuestra private key, esta funcion requiere de los siguientes parametros: $privatekey (porporcionada al registro), $remoteip (la ip remota), $challenge (un campo del captcha) y $response (un campo oculto del captcha), esta funcion quedaria de la siguiente manera:

1
2
3
4
5
6
<?php
$check = recaptcha_check_answer($privatekey,
$remoteip = $_SERVER['REMOTE_ADDR'],
$challenge = $_POST['recaptcha_challenge_field'],
$response = $_POST['recaptcha_response_field']);
?>

La validacion quedaria asi:

1
2
3
4
5
6
7
<?php
if($check->is_valid) {
echo "Captcha is correct";
} else {
echo $check->error;
}
?>

El documento completo seria asi:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
<!DOCTYPE html
     PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>reCAPTCHA</title>
</head>
<body>
<form action="" method="POST">
<?php
  require_once("recaptchalib.php");
  function recaptcha($publickey)
  {
      $captcha = recaptcha_get_html($publickey);
      echo $captcha;
  }
  recaptcha("Tu public key");
  function check($privatekey)
  {
      $error = "FALSE";
      $check = recaptcha_check_answer($privatekey, $remoteip = $_SERVER['REMOTE_ADDR'], $challenge = $_POST['recaptcha_challenge_field'], $response = $_POST['recaptcha_response_field']);
      if ($check->is_valid) {
          echo "Captcha is correct";
      } else {
          echo $check->error;
      }
  }
?>
<input type="submit" name="verify" value="Verify" />
</form>
<?php
  if ($_POST['verify']) {
      check("Tu private key");
  }
?>
</body>
</html>