Sử dụng reCAPTCHA với Perl

Lưu ý quan trọng: Phiên bản 1.0 của API reCAPTCHA không còn được hỗ trợ, vui lòng nâng cấp lên phiên bản 2.0. Tìm hiểu thêm

Mô-đun reCAPTCHA Perl cung cấp một cách đơn giản để đặt CAPTCHA trên trang web của bạn, giúp bạn ngăn chặn các bot lạm dụng trang web. Mô-đun này bao bọc reCAPTCHA API.

Để sử dụng reCAPTCHA với Perl, bạn có thể tải reCAPTCHA Perl xuống Mô-đun (do Andrew Armstrong đóng góp). Bạn sẽ cần cài đặt mô-đun này trên máy chủ web (máy chủ web). Mô-đun này phụ thuộc vào các mô-đun LWP::UserAgentHTML::Tiny, cả hai bạn cũng cần cài đặt phần mềm này. Dưới đây là một số hướng dẫn cơ bản về cách cài đặt Perl các mô-đun.

Bắt đầu nhanh

Sau khi bạn đăng ký khoá API và tải mô-đun reCAPTCHA Perl xuống, hãy xem hướng dẫn cơ bản dưới đây cách cài đặt reCAPTCHA trên trang web của bạn.

Phía máy khách (Cách hiển thị hình ảnh CAPTCHA)

Nếu muốn sử dụng mô-đun Perl để hiển thị tiện ích reCAPTCHA, bạn sẽ cần phải chèn dòng này ở gần đầu tệp, chứa phần tử biểu mẫu nơi có tiện ích reCAPTCHA được hiển thị:

    use Captcha::reCAPTCHA;

Sau đó, bạn cần tạo một phiên bản reCAPTCHA:

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

Cuối cùng, để hiển thị tiện ích reCAPTCHA, bạn phải đặt dòng sau vào trong <form> thẻ:

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

Vì vậy, mã của bạn có thể trông giống như sau:

    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

Đừng quên thay thế your_public_key bằng giá trị của Khoá API.

Phía máy chủ (Cách kiểm tra xem người dùng có nhập câu trả lời đúng hay không)

Dưới đây là khung cách xác minh câu trả lời của 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";
    }

Tài liệu đọc thêm

  • Tuỳ chỉnh giao diện
  • Mẹo và nguyên tắc
  • Khắc phục sự cố