استفاده از reCAPTCHA با پرل

مهم : نسخه 1.0 reCAPTCHA API دیگر پشتیبانی نمی‌شود، لطفاً به نسخه 2.0 ارتقا دهید. بیشتر بدانید

ماژول reCAPTCHA Perl یک راه ساده برای قرار دادن یک CAPTCHA در وب سایت شما ارائه می دهد و به شما کمک می کند ربات ها از سوء استفاده از آن جلوگیری کنید. ماژول ReCAPTCHA API را بسته بندی می کند.

برای استفاده از reCAPTCHA با پرل، می توانید ماژول reCAPTCHA Perl (که توسط اندی آرمسترانگ ارائه شده است) را دانلود کنید. شما باید این ماژول را روی دستگاه خود (وب سرور) نصب کنید. ماژول به ماژول های 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";
    }

بیشتر خواندن

  • سفارشی کردن ظاهر و احساس
  • نکات و رهنمودها
  • عیب یابی