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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    उपयोगकर्ता द्वारा HTML फ़ॉर्म भरने के बाद, जिसमें कैप्चा के लिए उनका उत्तर शामिल होता है, तो हम जब वे फ़ॉर्म सबमिट करते समय अपने जवाबों की जांच करने के लिए 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 -- स्ट्रिंग. आवश्यक फ़ॉर्म फ़ील्ड की वैल्यू re कैप्चा_response_field
    रिटर्न वैल्यू ReCaptchaResponse क्लास का उदाहरण

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

    मेल छिपाएं

    reCAPTCHA PHP लाइब्रेरी में Mailhide API के लिए बाइंडिंग शामिल हैं. यह एपीआई की मदद से, किसी ईमेल को reCAPTCHA में रैप किया जा सकता है, ताकि स्पैम मैसेज भेजने वाले लोग उसे न देख पाएं: परीक्षा...@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>