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 vào trang web của bạn, giúp bạn ngăn bot lợi dụng hình ảnh đó. Mô-đun sẽ bao bọc API ReCAPTCHA.

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

Bắt đầu nhanh

Sau khi bạn đăng ký khoá API và tải mô-đun reCAPTCHA Perl xuống, dưới đây là hướng dẫn cơ bản để 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 cần chèn dòng này vào gần đầu tệp cùng với thành phần biểu mẫu nơi tiện ích reCAPTCHA sẽ hiển thị:

    use Captcha::reCAPTCHA;

Sau đó, bạn cần tạo một phiên bản của 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 thẻ <form>:

    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 đã nhập đúng câu trả lời hay chưa)

Dưới đây là sơ đồ về cách xác minh câu trả lời 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";
    }

Đọc thêm

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