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 offre un moyen simple de placer un CAPTCHA sur votre site Web, ce qui vous aide à empêcher les bots d'en abuser. Le module encapsule l'API reCAPTCHA.

Pour utiliser reCAPTCHA avec Perl, vous pouvez télécharger le module ReCAPTCHA Perl (fourni par Andy Armstrong). Vous devez installer ce module sur votre ordinateur (serveur Web). Le module dépend des modules LWP::UserAgent et HTML::Tiny, qui doivent également être installés. Voici quelques instructions de base pour l'installation des modules Perl.

Quick Start

Une fois que vous vous êtes inscrit pour obtenir vos clés API et que vous avez téléchargé le module reCAPTCHA Perl, vous trouverez ci-dessous des instructions de base pour installer reCAPTCHA sur votre site.

Côté client (comment faire apparaître l'image CAPTCHA)

Si vous souhaitez utiliser le module Perl pour afficher le widget reCAPTCHA, vous devez insérer cette ligne dans la partie supérieure du fichier avec l'élément de 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 dans la balise <form> :

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

Votre code peut 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)

Voici un squelette de la façon de vérifier la réponse 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

  • Personnalisation de l'apparence
  • Conseils et consignes
  • Dépannage