การใช้ reCAPTCHA กับ Perl

สำคัญ: ไม่รองรับ reCAPTCHA API เวอร์ชัน 1.0 อีกต่อไป โปรดอัปเกรดเป็นเวอร์ชัน 2.0 ดูข้อมูลเพิ่มเติม

โมดูล reCAPTCHA Perl มอบวิธีง่ายๆ ในการวาง CAPTCHA บนเว็บไซต์เพื่อช่วยป้องกันการละเมิดโดยบ็อต โดยโมดูลจะรวมฟิลด์ reCAPTCHA API

หากต้องการใช้ reCAPTCHA กับ Perl คุณสามารถดาวน์โหลด reCAPTCHA Perl ได้ โมดูล (ผู้เขียน Andy Armstrong) คุณจะต้องติดตั้งโมดูลนี้ใน คอมพิวเตอร์ (เว็บเซิร์ฟเวอร์) โมดูลนี้ขึ้นอยู่กับโมดูล LWP::UserAgent และ HTML::Tiny ทั้งคู่ ซึ่งจะต้องติดตั้งด้วย นี่คือคำแนะนำเบื้องต้นในการติดตั้ง Perl โมดูล

คู่มือเริ่มต้นฉบับย่อ

หลังจากลงชื่อสมัครใช้คีย์ API และดาวน์โหลดโมดูล reCAPTCHA Perl แล้ว วิธีการเบื้องต้นมีดังนี้ ติดตั้ง reCAPTCHA ในเว็บไซต์

ฝั่งไคลเอ็นต์ (วิธีทำให้รูปภาพ CAPTCHA ปรากฏขึ้น)

หากต้องการใช้โมดูล Perl เพื่อแสดงวิดเจ็ต reCAPTCHA คุณจะต้องแทรก บรรทัดนี้ใกล้กับด้านบนของไฟล์ที่มีองค์ประกอบของฟอร์มที่จะเป็นวิดเจ็ต reCAPTCHA แสดง:

    use Captcha::reCAPTCHA;

จากนั้นให้สร้างอินสแตนซ์ของ reCAPTCHA

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

สุดท้าย ในการแสดงวิดเจ็ต reCAPTCHA คุณต้องวางบรรทัดต่อไปนี้ไว้ในแท็ก <form> แท็ก:

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

ดังนั้น โค้ดของคุณจะมีลักษณะดังนี้

    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

อย่าลืมแทนที่ your_public_key ด้วยค่า คีย์ API

ฝั่งเซิร์ฟเวอร์ (วิธีทดสอบว่าผู้ใช้ป้อนคำตอบที่ถูกต้องหรือไม่)

โครงสร้างของวิธียืนยันคำตอบ 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";
    }

อ่านเพิ่มเติม

  • การปรับแต่งรูปลักษณ์
  • เคล็ดลับและหลักเกณฑ์
  • การแก้ปัญหา