استخدام reCAPTCHA مع PHP

ملاحظة مهمة: لم يعُد الإصدار 1.0 من reCAPTCHA API متاحًا. يُرجى الترقية إلى الإصدار 2.0. مزيد من المعلومات

توفّر مكتبة reCAPTCHA PHP طريقة بسيطة لوضع اختبار CAPTCHA على موقعك الإلكتروني باستخدام لغة PHP، مما يساعدك على منع برامج التتبّع من إساءة استخدامها. تنتهي المكتبة reCAPTCHA API:

لاستخدام reCAPTCHA مع لغة PHP، يمكنك تنزيل لغة reCAPTCHA PHP. المكتبة. ستحتاج إلى ملف واحد فقط (recaptchalib.php). الملفات الأخرى الأمثلة والمحتوى التمهيدي والمواد القانونية -- لا تؤثر على الوظائف.

البدء بسرعة

بعد الاشتراك للحصول على مفاتيح واجهة برمجة التطبيقات، نقدّم في ما يلي تعليمات أساسية حول تثبيت 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 بـ المفتاح العام لواجهة برمجة التطبيقات.

لاحظ أن قيمة "الإجراء" السمة هي "verify.php". الآن،verify.php هو الملف الذي يتم إرسال قيم هذا النموذج إليه. لذلك يجب إنشاء ملف تحقق.php في نفس المكان الذي يوجد فيه html الخاص بالعميل.

تتوقع الدالة مطلوبة_once في المثال أعلاه أن يكون sumtchalib.php على النحو نفسه. الدليل كملف النموذج. إذا كانت في دليل آخر، يجب ربطه بشكل صحيح. على سبيل المثال، إذا كان reCAPTCHAtchalib.php في الدليل المسمى "captcha" الموجود على نفس كملف النموذج، ستبدو الدالة على النحو التالي: require_once('captcha/recaptchalib.php')

من جهة الخادم (كيفية اختبار ما إذا كان المستخدم قد أدخل الإجابة الصحيحة)

يجب وضع التعليمة البرمجية التالية أعلى ملف التحقق من.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 صحيحة، يعني ذلك أنّه تم إكمال تحدّي CAPTCHA بشكل صحيح، وعليك مواصلة معالجة النموذج.
  • إذا كانت القيمة $resp->is_valid خاطئة، هذا يعني أن المستخدم لم يقدّم اختبار CAPTCHA الصحيح. عليك إعادة عرض النموذج للسماح له بمحاولة أخرى. في هذه الحالة سيكون $resp->error رمز خطأ يمكن تقديمه إلى recaptcha_get_html. يؤدي تمرير رمز الخطأ إلى جعل عنصر تحكّم reCAPTCHA يعرض رسالة توضِّح أنّ المستخدم أدخل النص بشكل غير صحيح ويجب إعادة المحاولة.
  • يجب ملاحظة أنّ هذا الرمز يطلب إدخال المفتاح الخاص، لذا لا يجب الخلط بينه. باستخدام المفتاح العام. يمكنك الحصول عليه من الصفحة نفسها التي يتوفّر فيها المفتاح العام.

    تأكد أيضًا من تعيين النموذج للحصول على متغيرات النموذج باستخدام $_POST، بدلاً من $_REQUEST، وأن النموذج نفسه يستخدم طريقة POST.

    هذا كل ما في الأمر! من المفترض أن يعمل reCAPTCHA على موقعك الإلكتروني.

    قراءات إضافية

  • تخصيص الشكل والأسلوب
  • نصائح وإرشادات
  • تحديد المشاكل وحلّها
  • الدليل المرجعي لمكوّن PHP الإضافي

    في ما يلي قائمة شاملة بجميع طرق المكوّن الإضافي reCAPTCHA PHP.

    دالة sumtcha_get_html

    تعرض الدالة recaptcha_get_html لغة HTML التي تقدّم reCAPTCHA إلى الـ المستخدم.

    recaptcha_get_html
    المعلمة
    $pubkey -- سلسلة. مطلوبة. مفتاح reCAPTCHA العام الخاص بك من صفحة الاشتراك في واجهة برمجة التطبيقات
    $error -- سلسلة. اختياري (القيمة الفارغة هي القيمة التلقائية) إذا تم ضبط هذه السلسلة، ستعرض منطقة reCAPTCHA رمز الخطأ. المعطاة. يأتي رمز الخطأ هذا من ReCaptchaResponse->$error
    $use_ssl -- boolean. اختياري (خطأ هو الإعداد التلقائي) هل يجب استخدام واجهة برمجة التطبيقات المستندة إلى طبقة المقابس الآمنة (SSL)؟ إذا كنت تعرض صفحة إلى مستخدم عبر طبقة المقابس الآمنة، فتأكد من تعيين هذا على "صواب" حتى لا يظهر مربع حوار الخطأ تظهر في متصفح المستخدم.
    القيمة المعروضة سلسلة تحتوي على HTML لوضعها على صفحة الويب

    دالة sumtcha_check_answer

    بعد أن يملأ المستخدم نموذج HTML، بما في ذلك إجابته لاختبار CAPTCHA، يريدون التحقق من إجابتهم عند إرسال النموذج باستخدام recaptcha_check_answer. ستكون إجابة المستخدم في حقلين من حقول النموذج، "recaptcha_challenge_field" وrecaptcha_response_field" تشير رسالة الأشكال البيانية سترسل مكتبة reCAPTCHA طلب HTTP إلى خادم reCAPTCHA وتتحقق من صحة بيانات معينة.

    recaptcha_check_answer
    المعلمة
    $privkey -- السلسلة. مطلوبة. مفتاح reCAPTCHA الخاص من صفحة الاشتراك في واجهة برمجة التطبيقات.
    $remoteip -- سلسلة. مطلوبة. عنوان IP للمستخدم بالتنسيق 192.168.0.1
    $challenge -- سلسلة. مطلوبة.
    قيمة حقل النموذج reCAPTCHA_challenge_field
    $response -- string. مطلوب تحديد خيار قيمة حقل النموذج reCAPTCHA_response_field
    القيمة المعروضة مثيل لفئة ReCaptchaResponse

    ReCaptchaResponse
    الحقل
    $is_valid -- boolean هل اعتقدت خدمة reCAPTCHA أن الإجابة كانت صالحة؟
    $error -- سلسلة إذا كانت الإجابة غير صالحة، فما المشكلة؟ يمكن أن يكون رمز الخطأ هذا مستخدمة في reCAPTCHA_get_html
    القيمة المعروضة عنوان URL HTML أو عنوان URL الأولي لفك ترميز عنوان البريد الإلكتروني، بناءً على الوظيفة التي استدعيت.

    إخفاء بريدي

    تتضمن مكتبة reCAPTCHA PHP عمليات ربط لواجهة برمجة تطبيقات Mailإخفاء. هذا النمط تتيح لك واجهة برمجة التطبيقات تجميع رسالة إلكترونية في reCAPTCHA لمنع أصحاب الأسلوب غير المرغوب فيه من الاطّلاع عليها: الاختبار...@example.com.

    يتطلب جزء Mail إذًا من مكتبة PHP وحدة mcrypt بلغة PHP.

    تتألف واجهة برمجة تطبيقات MailHangouts من وظيفتين recaptcha_mailhide_html recaptcha_mailhide_url الدوال لها نفس المعلمات. إصدار _html تعرض HTML التي يمكن وضعها مباشرةً على صفحة الويب جزء اسم المستخدم الذي تم تمريره في البريد الإلكتروني ويتم اقتطاعه واستبداله برابط يستدعي Mailإخفاء. يمنحك إصدار _url عنوان URL فك ترميز الرسالة الإلكترونية وتركها لك لوضع الرسالة الإلكترونية في ملف HTML.

    sumtcha_mailhidden_url / Summarytcha_mail الأوّلي_html
    المعلمة
    $pubkey -- سلسلة مفتاح Mailhe العام من صفحة الاشتراك
    $privkey -- السلسلة مفتاح Mailhe الخاص من صفحة الاشتراك
    $email -- سلسلة عنوان البريد الإلكتروني الذي تريد إخفاءه.

    يوضح المثال التالي كيفية استخدام Mail إذًا:

    <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>