Utiliser reCAPTCHA avec Perl

Important: La version 1.0 de l'API reCAPTCHA n'est plus compatible. Veuillez passer à la version 2.0. En savoir plus

Le module reCAPTCHA Perl permet de placer facilement un CAPTCHA sur votre site Web, ce qui vous permet d'empêcher les bots d'en abuser. Le module encapsule API reCAPTCHA :

Pour utiliser reCAPTCHA avec Perl, vous pouvez télécharger le logiciel reCAPTCHA Perl Module (contribué par Andy Armstrong). Vous devez installer ce module sur votre machine virtuelle (serveur Web). Le module dépend des modules LWP::UserAgent. et HTML::Tiny, les deux qui devra également être installé. Voici quelques instructions de base pour installer Perl modules.

Démarrage rapide

Après vous être inscrit pour vos clés API et téléchargé le module reCAPTCHA Perl, vous trouverez ci-dessous des instructions de base pour l'installation de reCAPTCHA sur votre site.

Côté client (comment afficher l'image CAPTCHA)

Si vous souhaitez utiliser le module Perl pour afficher le widget reCAPTCHA, vous devez insérer cette ligne en haut du fichier contenant l'élément du formulaire où le widget reCAPTCHA sera affiché:

    use Captcha::reCAPTCHA;

Vous devez ensuite créer une instance de reCAPTCHA:

    my $c = Captcha::reCAPTCHA->new;

Enfin, pour afficher le widget reCAPTCHA, vous devez placer la ligne suivante à l'intérieur de <form> tag:

    print $c->get_html("your_public_key");

Votre code peut donc se présenter comme suit:

    use Captcha::reCAPTCHA;

    my $c = Captcha::reCAPTCHA->new;

    print <<EOT;
    <html>
      <body>
        <form action="" method="post">
    EOT

    print $c->get_html("your_public_key");

    print <<EOT;
        <input type="submit" value="submit" />
        </form>
      </body>
    </html>
    EOT

N'oubliez pas de remplacer your_public_key par la valeur de votre Clé API.

Côté serveur (comment vérifier si l'utilisateur a saisi la bonne réponse)

Vous trouverez ci-dessous un squelette pour vérifier la réponse du service reCAPTCHA:

    use Captcha::reCAPTCHA;

    my $c = Captcha::reCAPTCHA->new;

    my $challenge = param 'recaptcha_challenge_field';
    my $response = param 'recaptcha_response_field';

    # Verify submission
    my $result = $c->check_answer(
        "your_private_key", $ENV{'REMOTE_ADDR'},
        $challenge, $response
    );

    if ( $result->{is_valid} ) {
        print "Yes!";
    }
    else {
        # Error
        print "No";
    }

Documentation complémentaire

  • Personnaliser l'apparence
  • Conseils et consignes
  • Dépannage