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

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

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

PHP के साथ reCAPTCHA का इस्तेमाल करने के लिए, reCAPTCHA PHP लाइब्रेरी डाउनलोड करें. आपको वहां से सिर्फ़ एक फ़ाइल की ज़रूरत होगी (re कैप्चाlib.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 करना न भूलें आपके एपीआई सार्वजनिक पासकोड से भी साइन इन किया जा सकता है.

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

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

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

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

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

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

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

    re कैप्चा_get_html फ़ंक्शन

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

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

    recaptcha_check_answer फ़ंक्शन

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

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

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

    Mailhide

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

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

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

    re कैप्चा_mailhide_url / re कैप्चा_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>