Używanie reCAPTCHA z Perl

Ważne: interfejs API reCAPTCHA w wersji 1.0 nie jest już obsługiwany. Uaktualnij go do wersji 2.0. Więcej informacji

Moduł reCAPTCHA Perl pozwala w prosty sposób umieścić w witrynie zadanie CAPTCHA, pomagając Ci powstrzymać boty przed jego nadużywaniem. Moduł zawiera interfejs reCAPTCHA API.

Aby używać reCAPTCHA z Perl, możesz pobrać moduł reCAPTCHA Perl (dostarczony przez Andy'ego Armstronga). Musisz go zainstalować na swoim komputerze. Moduł zależy od modułów LWP::UserAgent i HTML::Tiny – oba muszą być zainstalowane. Oto kilka podstawowych instrukcji instalowania modułów Perl.

Szybki start

Po zarejestrowaniu się w kluczach interfejsu API i pobraniu modułu reCAPTCHA Perl poniżej znajdziesz podstawowe instrukcje instalowania reCAPTCHA w swojej witrynie.

Po stronie klienta (jak wyświetlić obraz CAPTCHA)

Jeśli chcesz użyć modułu Perl do wyświetlenia widżetu reCAPTCHA, u góry pliku musisz wstawić ten wiersz z elementem formularza, w którym będzie wyświetlany widżet reCAPTCHA:

    use Captcha::reCAPTCHA;

Następnie musisz utworzyć instancję reCAPTCHA:

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

Aby wyświetlić widżet reCAPTCHA, musisz umieścić w tagu <form> ten wiersz:

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

Twój kod może więc wyglądać mniej więcej tak:

    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

Nie zapomnij zastąpić your_public_key wartością swojego klucza interfejsu API.

Po stronie serwera (jak sprawdzić, czy użytkownik wpisał poprawną odpowiedź)

Poniżej znajduje się szkielet weryfikacji odpowiedzi 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";
    }

Dalsza lektura

  • Dostosowywanie wyglądu i stylu
  • Wskazówki i wytyczne
  • Rozwiązywanie problemów