← Este blog NO se ha movido a otra dirección Quise migrar a PHP, pero no lo logré →
Jorge Grippo

Redescubrí reCAPTCHA.net

CAPTCHA, es una solución para hacer stop a robots. Programáticamente responde a la pregunta “¿El usuario es humano o robótico?”.

Justo ayer viendo algunos videos de Matt Cutts, en uno dedicado a responder por qué Google no usa reCAPTCHA.net, me dí cuenta que nunca habáa podido usar reCAPTCHA, porque solo estaba disponible en inglés. Ahora está disponible en español, asique, ¿por qué en vez de usar una librería local, no uso un webservice para implementar CAPTCHA en mi siito? Bueno para que veas que bien funciona, una implementación de ejemplo en Perl, es así:

Requisitos:

  1. Ingresar en reCAPTHA.NET, inscribirse y agregar tu sitio.
  2. Instalar el modulo Perl Captcha::reCAPTCHA


Ejemplo: captcha.cgi

#!/usr/bin/perl

use strict;
use CGI qw/:standard/;
use Captcha::reCAPTCHA;

my $c = Captcha::reCAPTCHA->new;
my %o = ('lang' => 'es', 'theme' => 'clean');

# Output form
# get_html( $pubkey, $error, $use_ssl, $options )
print header,
start_html('A Simple Example'),
h1('A Simple Example'),
start_form,
"What's your name? ",textfield('name'),p,
"What's the combination?", p,
checkbox_group(-name=>'words',
-values=>['eenie','meenie','minie','moe'],
-defaults=>['eenie','minie']), p,
"What's your favorite color? ",
popup_menu(-name=>'color',
-values=>['red','green','blue','chartreuse']),p,
$c->get_html( 'AQUI PONES TU CLAVE PUBLICA', undef, undef, %o),
submit,
end_form,
hr;

if (param()) {
my $name = param('name');
my $keywords = join ', ',param('words');
my $color = param('color');
print "Your name is",em(escapeHTML($name)),p,
"The keywords are: ",em(escapeHTML($keywords)),p,
"Your favorite color is ",em(escapeHTML($color)),
hr;

my $result = $c->check_answer(
'AQUI PONES TU CLAVE PRIVADA', $ENV{'REMOTE_ADDR'},
param('recaptcha_challenge_field'),
param('recaptcha_response_field')
);

if ( $result->{is_valid} ) {
print "Yes!";
} else {
# Error
my $error = $result->{error};
print "Error " . $error ;
}

}
print end_html;

Compártelo

Coméntalo en tu Facebook