استفاده از reCAPTCHA با PHP

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

کتابخانه reCAPTCHA PHP راه ساده ای برای قرار دادن یک CAPTCHA در وب سایت PHP شما ارائه می دهد و به شما کمک می کند تا مانع از سوء استفاده ربات ها از آن شوید. کتابخانه reCAPTCHA API را بسته بندی می کند.

برای استفاده از reCAPTCHA با PHP، می توانید کتابخانه reCAPTCHA PHP را دانلود کنید. شما فقط به یک فایل از آنجا نیاز دارید (recaptchalib.php). فایل های دیگر نمونه ها، readme و موارد قانونی هستند -- آنها بر عملکرد تأثیر نمی گذارند.

شروع سریع

بعد از اینکه برای کلیدهای API خود ثبت نام کردید، در زیر دستورالعمل های اساسی برای نصب reCAPTCHA در سایت شما آورده شده است. راهنمای مرجع کامل پلاگین PHP را می توانید در زیر بیابید.

سمت مشتری (نحوه نمایش تصویر CAPTCHA)

اگر می خواهید از کتابخانه PHP برای نمایش ویجت reCAPTCHA استفاده کنید، باید این قطعه کد را در عنصر <form> که ویجت reCAPTCHA در آن قرار می گیرد، وارد کنید:

  require_once('recaptchalib.php');
  $publickey = "your_public_key"; // you got this from the signup page
  echo recaptcha_get_html($publickey);

با کد، فرم شما ممکن است چیزی شبیه به این باشد:

  <html>
    <body> <!-- the body tag is required or the CAPTCHA may not show on some browsers -->
      <!-- your HTML content -->

      <form method="post" action="verify.php">
        <?php
          require_once('recaptchalib.php');
          $publickey = "your_public_key"; // you got this from the signup page
          echo recaptcha_get_html($publickey);
        ?>
        <input type="submit" />
      </form>

      <!-- more of your HTML content -->
    </body>
  </html>

فراموش نکنید که $publickey را با جایگزین کردن your_public_key با کلید عمومی API خود تنظیم کنید.

توجه داشته باشید که مقدار ویژگی "action" "verify.php" است. حال verify.php فایل مقصدی است که مقادیر این فرم در آن ارسال می شود. بنابراین شما به یک فایل verify.php در همان محل html کلاینت نیاز دارید.

تابع require_once در مثال بالا انتظار دارد که recaptchalib.php در همان دایرکتوری فایل فرم شما باشد. اگر در دایرکتوری دیگری است، باید آن را به درستی پیوند دهید. برای مثال، اگر recaptchalib.php شما در دایرکتوری به نام "captcha" باشد که در همان سطح فایل فرم شما قرار دارد، تابع به این شکل خواهد بود: require_once('captcha/recaptchalib.php') .

سمت سرور (نحوه تست اینکه آیا کاربر پاسخ صحیح را وارد کرده است)

کد زیر باید در بالای فایل verify.php قرار داده شود:

  <?php
  require_once('recaptchalib.php');
  $privatekey = "your_private_key";
  $resp = recaptcha_check_answer ($privatekey,
                                $_SERVER["REMOTE_ADDR"],
                                $_POST["recaptcha_challenge_field"],
                                $_POST["recaptcha_response_field"]);

  if (!$resp->is_valid) {
    // What happens when the CAPTCHA was entered incorrectly
    die ("The reCAPTCHA wasn't entered correctly. Go back and try it again." .
         "(reCAPTCHA said: " . $resp->error . ")");
  } else {
    // Your code here to handle a successful verification
  }
  ?>

در کد بالا:

  • recaptcha_check_answer یک شی را برمی گرداند که نشان می دهد آیا کاربر چالش را با موفقیت انجام داده است یا خیر.
  • اگر $resp->is_valid درست باشد، چالش کپچا به درستی تکمیل شده است و باید به پردازش فرم ادامه دهید.
  • اگر $resp->is_valid نادرست است، کاربر نتوانسته متن کپچای صحیح را ارائه کند و باید فرم را دوباره نمایش دهید تا به او اجازه تلاش دیگری را بدهید. در این حالت $resp->error یک کد خطایی خواهد بود که می تواند به recaptcha_get_html ارائه شود. ارسال کد خطا باعث می شود کنترل reCAPTCHA پیامی را نشان دهد که توضیح می دهد کاربر متن را اشتباه وارد کرده است و باید دوباره امتحان کند.
  • توجه داشته باشید که این کد کلید خصوصی را می خواهد که نباید با کلید عمومی اشتباه گرفته شود. شما آن را از همان صفحه با کلید عمومی دریافت می کنید.

    همچنین مطمئن شوید که فرم شما طوری تنظیم شده است که متغیرهای فرم را با استفاده از $_POST به جای $_REQUEST دریافت کند و خود فرم از روش POST استفاده کند.

    خودشه! اکنون reCAPTCHA باید روی سایت شما کار کند.

    بیشتر خواندن

  • سفارشی کردن ظاهر و احساس
  • نکات و رهنمودها
  • عیب یابی
  • راهنمای مرجع پلاگین PHP

    در زیر لیستی جامع از تمام روش های پلاگین reCAPTCHA PHP آمده است.

    تابع recaptcha_get_html

    تابع recaptcha_get_html HTML را نشان می دهد که reCAPTCHA را به کاربر ارائه می دهد.

    recaptcha_get_html
    پارامتر
    $pubkey -- رشته. ضروری. کلید عمومی reCAPTCHA شما، از صفحه ثبت نام API
    خطای $ -- رشته. اختیاری (تهی پیش فرض است) اگر این رشته تنظیم شده باشد، ناحیه reCAPTCHA کد خطای داده شده را نمایش می دهد. این کد خطا از ReCaptchaResponse->$error می آید
    $use_ssl -- بولی. اختیاری (نادرست پیش فرض است) آیا باید از API مبتنی بر SSL استفاده شود؟ اگر صفحه‌ای را از طریق SSL به کاربر نمایش می‌دهید، حتماً آن را روی true تنظیم کنید تا کادر گفتگوی خطا در مرورگر کاربر ظاهر نشود.
    ارزش برگشتی رشته ای حاوی HTML برای قرار دادن در صفحه وب.

    تابع recaptcha_check_answer

    پس از اینکه کاربر فرم HTML را پر کرد، از جمله پاسخ او برای CAPTCHA، می‌خواهیم وقتی فرم را با استفاده از تابع recaptcha_check_answer ارسال می‌کند، پاسخ او را بررسی کنیم. پاسخ کاربر در دو فیلد recaptcha_challenge_field و recaptcha_response_field خواهد بود. کتابخانه reCAPTCHA یک درخواست HTTP به سرور reCAPTCHA ارسال می کند و پاسخ کاربر را تأیید می کند.

    recaptcha_check_answer
    پارامتر
    $privkey -- رشته. ضروری. کلید خصوصی reCAPTCHA شما، از صفحه ثبت نام API .
    $remoteip -- رشته. ضروری. آدرس IP کاربر، با فرمت 192.168.0.1
    $challenge -- رشته. ضروری.
    مقدار فیلد فرم recaptcha_challenge_field
    $response -- رشته. ضروری مقدار فیلد فرم recaptcha_response_field
    ارزش برگشتی نمونه ای از کلاس ReCaptchaResponse

    ReCaptchaResponse
    رشته
    $is_valid -- بولی آیا reCAPTCHA معتقد بود که پاسخ معتبر است؟
    خطای $ -- رشته اگر جواب نامعتبر بود مشکل چیست؟ این کد خطا را می توان در recaptcha_get_html استفاده کرد
    ارزش برگشتی HTML یا URL خام برای رمزگشایی آدرس ایمیل، بسته به عملکردی که شما فراخوانی کرده اید.

    Mailhide

    کتابخانه reCAPTCHA PHP شامل پیوندهایی برای Mailhide API است. این API به شما امکان می دهد یک ایمیل را در یک reCAPTCHA بپیچید تا از دیدن هرزنامه ها جلوگیری کنید: exam ... @example.com.

    بخش Mailhide کتابخانه PHP به ماژول PHP mcrypt نیاز دارد.

    Mailhide API از دو تابع recaptcha_mailhide_html و recaptcha_mailhide_url تشکیل شده است. توابع دارای پارامترهای یکسانی هستند. نسخه _html HTML را برمی گرداند که می تواند مستقیماً در صفحه وب شما قرار گیرد. قسمت نام کاربری ایمیلی که ارسال می شود کوتاه شده و با پیوندی جایگزین می شود که Mailhide را فراخوانی می کند. نسخه _url آدرسی را برای رمزگشایی ایمیل در اختیار شما قرار می دهد و این را به شما واگذار می کند که ایمیل را در HTML قرار دهید.

    recaptcha_mailhide_url / recaptcha_mailhide_html
    پارامتر
    $pubkey -- رشته کلید عمومی Mailhide از صفحه ثبت نام
    $privkey -- رشته کلید خصوصی Mailhide از صفحه ثبت نام
    $email -- رشته آدرس ایمیلی که می خواهید پنهان کنید.

    مثال زیر نحوه استفاده از Mailhide را نشان می دهد:

    <html><body>
    <?
    require_once ("recaptchalib.php");
    // get a key at http://www.google.com/recaptcha/mailhide/apikey
    $mailhide_pubkey = '';
    $mailhide_privkey = '';
    ?>
    The Mailhide encoding of example@example.com is
    <?
    echo recaptcha_mailhide_html ($mailhide_pubkey,
                                  $mailhide_privkey,
                                  "example@example.com");
    ?>.
    <br>
    The url for the email is:
    <?
    echo recaptcha_mailhide_url ($mailhide_pubkey,
                                 $mailhide_privkey,
                                 "example@example.com");
    ?>
    <br>
    </body></html>