PHP के साथ reCAPTCHA का इस्तेमाल करना

अहम जानकारी: reCAPTCHA API का 1.0 वर्शन अब काम नहीं करता. कृपया इसे 2.0 वर्शन पर अपग्रेड करें. ज़्यादा जानें

reCAPTCHA PHP लाइब्रेरी की मदद से, अपनी PHP वेबसाइट पर कैप्चा रखा जा सकता है, ताकि वह बॉट का गलत इस्तेमाल न कर सके. इस लाइब्रेरी में recaptcha API को रैप किया जाता है.

PHP के साथ reCAPTCHA का इस्तेमाल करने के लिए, re कैप्चा PHP लाइब्रेरी को डाउनलोड किया जा सकता है. आपको वहां सिर्फ़ एक फ़ाइल की ज़रूरत होगी (recaptchalib.php). दूसरी फ़ाइलें उदाहरण, रीडमी, और कानूनी सामग्री हैं -- इनका फ़ंक्शन पर कोई असर नहीं पड़ता है.

क्विक स्टार्ट

एपीआई कुंजियों के लिए साइन अप करने के बाद, साइट पर reCAPTCHA इंस्टॉल करने के कुछ बुनियादी निर्देश यहां दिए गए हैं. नीचे PHP प्लग इन की पूरी रेफ़रंस गाइड देखी जा सकती है.

क्लाइंट साइड (कैप्चा इमेज दिखाने का तरीका)

अगर आपको reCAPTCHA विजेट दिखाने के लिए PHP लाइब्रेरी का इस्तेमाल करना है, तो आपको कोड के इस स्निपेट को <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>

your_public_key को अपने एपीआई की सार्वजनिक कुंजी से बदलकर, $publickey सेट करना न भूलें.

ध्यान दें कि "कार्रवाई" विशेषता का मान "verify.php" है. अब, verification.php वह डेस्टिनेशन फ़ाइल है जिसमें इस फ़ॉर्म की वैल्यू सबमिट की जाती हैं. इसलिए, आपको क्लाइंट html की जगह ही verify.php फ़ाइल की ज़रूरत होगी.

ऊपर दिए गए उदाहरण में दिए गए required_ऑन के फ़ंक्शन के लिए ज़रूरी है कि recaptchalib.php उसी डायरेक्ट्री में शामिल हो जिसमें आपकी फ़ॉर्म फ़ाइल है. अगर वह किसी दूसरी डायरेक्ट्री में है, तो आपको उसे ठीक तरह से लिंक करना होगा. उदाहरण के लिए, अगर आपका recaptchalib.php "कैप्चा" नाम की डायरेक्ट्री में उसी लेवल पर है जिसका लेवल आपकी फ़ॉर्म फ़ाइल है, तो फ़ंक्शन ऐसा दिखेगा: require_once('captcha/recaptchalib.php').

सर्वर साइड (यह कैसे पता करें कि उपयोगकर्ता ने सही जवाब दिया है या नहीं)

नीचे दिया गया कोड verification.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 कंट्रोल को एक मैसेज दिखता है. इसमें बताया जाता है कि उपयोगकर्ता ने गलत टेक्स्ट डाला है और उसे फिर से कोशिश करनी चाहिए.
  • ध्यान दें कि इस कोड में private कुंजी की मांग की जा रही है, जिसे सार्वजनिक कुंजी और सार्वजनिक कुंजी के तौर पर नहीं माना जाना चाहिए. आपको यह जानकारी सार्वजनिक कुंजी वाले पेज से ही मिलेगी.

    यह भी पक्का करें कि आपका फ़ॉर्म, $_REQUEST के बजाय $_POST का इस्तेमाल करके फ़ॉर्म वैरिएबल पाने के लिए सेट किया गया हो और यह कि फ़ॉर्म खुद POST तरीके का इस्तेमाल कर रहा हो.

    बस हो गया! reCAPTCHA अब आपकी साइट पर काम करने लगेगा.

    इसके बारे में और पढ़ें

  • रंग-रूप को पसंद के मुताबिक बनाना
  • सलाह और दिशा-निर्देश
  • किसी समस्या को हल करना
  • PHP प्लग इन संदर्भ गाइड

    नीचे reCAPTCHA PHP प्लग इन की सभी तरीकों की पूरी सूची दी गई है.

    recaptcha_get_html फ़ंक्शन

    recaptcha_get_html फ़ंक्शन वह एचटीएमएल दिखाता है जो उपयोगकर्ता को reCAPTCHA दिखाता है.

    recaptcha_get_html
    पैरामीटर
    $pubkey -- स्ट्रिंग. आवश्यक है. एपीआई साइनअप पेज से, आपकी reCAPTCHA सार्वजनिक कुंजी
    $error -- स्ट्रिंग. वैकल्पिक (शून्य डिफ़ॉल्ट है) अगर यह स्ट्रिंग सेट की जाती है, तो reCAPTCHA एरिया में गड़बड़ी के लिए मिला कोड दिखेगा. यह गड़बड़ी का कोड ReCaptchaResponse->$error से मिलता है
    $use_एसएसएल -- बूलियन. वैकल्पिक (गलत डिफ़ॉल्ट है) क्या SSL-आधारित API का उपयोग किया जाना चाहिए? अगर उपयोगकर्ता को एसएसएल पर कोई पेज दिखाया जा रहा है, तो पक्का करें कि वह पेज सही पर सेट हो, ताकि उपयोगकर्ता के ब्राउज़र में गड़बड़ी वाला डायलॉग न दिखे.
    रिटर्न वैल्यू इस स्ट्रिंग में एचटीएमएल होता है, जिसे वेब पेज पर डाला जाता है.

    recaptcha_check_answer फ़ंक्शन

    जब उपयोगकर्ता कैप्चा के लिए अपने जवाब के साथ एचटीएमएल फ़ॉर्म भरता है, तब हम चाहते हैं कि जब वे recaptcha_check_answer फ़ंक्शन का इस्तेमाल करके फ़ॉर्म सबमिट करें, तब उनके जवाब की जांच हो. उपयोगकर्ता का जवाब दो फ़ॉर्म फ़ील्ड में होगा, recaptcha_challenge_field और recaptcha_response_field. re कैप्चा लाइब्रेरी, reCAPTCHA सर्वर को एक एचटीटीपी अनुरोध भेजेगी और उपयोगकर्ता के जवाब की पुष्टि करेगी.

    recaptcha_check_answer
    पैरामीटर
    $prvkey -- स्ट्रिंग. आवश्यक है. एपीआई साइनअप पेज से, आपकी reCAPTCHA निजी कुंजी.
    $remoteip -- स्ट्रिंग. ज़रूरी है. उपयोगकर्ता का आईपी पता, 192.168.0.1 फ़ॉर्मैट में
    $चैलेंज -- स्ट्रिंग. आवश्यक.
    फ़ॉर्म फ़ील्ड recaptcha_Challenge_field की वैल्यू
    $response -- स्ट्रिंग. ज़रूरी है फ़ॉर्म फ़ील्ड recaptcha_response_field की वैल्यू
    रिटर्न वैल्यू ReCaptchaResponse क्लास का उदाहरण

    ReCaptchaResponse
    फ़ील्ड
    $is_valid -- बूलियन क्या reCAPTCHA को लगता है कि यह जवाब सही है?
    $error -- स्ट्रिंग अगर जवाब गलत था, तो क्या समस्या थी? इस गड़बड़ी कोड का इस्तेमाल recaptcha_get_html में किया जा सकता है
    रिटर्न वैल्यू आपने जिस फ़ंक्शन को कॉल किया है उसके आधार पर ईमेल पते को डिकोड करने के लिए, एचटीएमएल या रॉ यूआरएल.

    मेल छिपाएं

    reCAPTCHA PHP लाइब्रेरी में Mailhide API के लिए बाइंडिंग शामिल होती हैं. यह एपीआई आपको reCAPTCHA में किसी ईमेल को रैप करने की सुविधा देता है, ताकि स्पैम करने वाले लोग उसे न देख पाएं: exam...@example.com.

    PHP लाइब्रेरी के Mailhide वाले हिस्से के लिए PHP mcrypt मॉड्यूल की आवश्यकता है.

    Mailhide API में दो फ़ंक्शन होते हैं: recaptcha_mailhide_html और recaptcha_mailhide_url. फ़ंक्शन में एक जैसे पैरामीटर होते हैं. _html वर्शन, एचटीएमएल दिखाता है जिसे सीधे आपके वेब पेज पर डाला जा सकता है. पास किए गए ईमेल के उपयोगकर्ता नाम वाले हिस्से को छोटा कर दिया जाता है और उसे Mailhide को कॉल करने वाले लिंक से बदल दिया जाता है. _url वर्शन आपको ईमेल को डिकोड करने के लिए यूआरएल देता है और ईमेल को एचटीएमएल में रखने के लिए आपके ऊपर छोड़ देता है.

    recaptcha_mailhide_url / recaptcha_mailhide_html शेयर करें
    पैरामीटर
    $pubkey -- स्ट्रिंग साइनअप पेज की Mailhide सार्वजनिक कुंजी
    $prvkey -- स्ट्रिंग साइनअप पेज की 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>