FormMail এর সাথে reCAPTCHA ব্যবহার করা

গুরুত্বপূর্ণ : reCAPTCHA API-এর সংস্করণ 1.0 আর সমর্থিত নয়, অনুগ্রহ করে সংস্করণ 2.0-এ আপগ্রেড করুন৷ আরও জানুন

এখানে আমরা ব্যাখ্যা করব কিভাবে reCAPTCHA পার্ল মডিউল ব্যবহার না করে আপনার FormMail স্ক্রিপ্টে reCAPTCHA যোগ করতে হয়। আপনি কি করছেন তা যদি আপনি জানেন, তাহলে আপনি বিকল্পভাবে reCAPTCHA পার্ল মডিউল ব্যবহার করতে পারেন।

ক্লায়েন্ট সাইড (কিভাবে ক্যাপচা ইমেজ দেখানো যায়)

আপনার HTML পৃষ্ঠায়, <form> উপাদানের ভিতরে আপনাকে অবশ্যই নিম্নলিখিত কোড যোগ করতে হবে:

  <script type="text/javascript"
    src="http://www.google.com/recaptcha/api/challenge?k=your_public_key">
  </script>
  <noscript>
    <iframe src="http://www.google.com/recaptcha/api/noscript?k=your_public_key"
        height="300" width="500" frameborder="0"></iframe>

    <textarea name="recaptcha_challenge_field" rows="3" cols="40">
    </textarea>
    <input type="hidden" name="recaptcha_response_field"
        value="manual_challenge">
  </noscript>

এটি সম্ভবত বলা ছাড়াই চলে, তবে আমরা যাইহোক এটি বলব: আপনাকে your_public_key এর দুটি দৃষ্টান্তকে পাবলিক কী দিয়ে প্রতিস্থাপন করতে হবে যা আপনি অ্যাকাউন্ট তৈরির প্রক্রিয়ার সময় পেয়েছিলেন। সতর্ক থাকুন যে আপনি ভুল করে আপনার ব্যক্তিগত কী ব্যবহার করবেন না।

এটি মূলত দুটি পরামিতি যোগ করবে, যা একটি POST অনুরোধের মাধ্যমে formmail.cgi (বা FormMail.pl) এ পাস করা হয়, যথা:

  • recaptcha_challenge_field : এটি আপনার পাবলিক কী এর মাধ্যমে তৈরি করা চ্যালেঞ্জ।
  • recaptcha_response_field : এটি উপরের চ্যালেঞ্জের জন্য ব্যবহারকারীর জমা দেওয়া প্রতিক্রিয়া।
  • সার্ভার সাইড (ব্যবহারকারী সঠিক উত্তর দিলে কিভাবে পরীক্ষা করবেন)

    এরপরে, আপনাকে দুটি প্যারামিটার পরিচালনা করতে এবং reCAPTCHA সার্ভার থেকে চ্যালেঞ্জ যাচাই করতে formmail.cgi (বা FormMail.pl) পরিবর্তন করতে হবে। এই মুহুর্তে, আপনার FormMail.pl-এর একটি ব্যাকআপ অনুলিপি তৈরি করা সম্ভবত একটি ভাল ধারণা, শুধুমাত্র ক্ষেত্রে। নীচের কোডে, "+" মানে ফর্মমেল স্ক্রিপ্টে লাইন যোগ করতে হবে, এবং "-" মানে লাইনটি থেকে সরানো দরকার। প্রতিটি ক্ষেত্রে, আমরা ফর্মমেল স্ক্রিপ্টে সংলগ্ন লাইনগুলি দেখিয়ে লাইনগুলিকে কোথায় যুক্ত বা সরাতে হবে তা দেখাই।

    প্রথমে, আপনাকে পার্লকে মডিউল LWP::UserAgent ব্যবহার করতে বলতে হবে FormMail-এ নিম্নলিখিত লাইন যোগ করে:

     # ACCESS CONTROL FIX: Peter D. Thompson Yezek                                #
     #                     http://www.securityfocus.com/archive/1/62033           #
     ##############################################################################
     +use LWP::UserAgent;
     +
    

    (এর জন্য আপনার পার্ল পরিবেশে মডিউল LWP::UserAgent থাকতে হবে। পার্লের বেশিরভাগ ইনস্টলেশনেই এই মডিউলটি ইতিমধ্যেই রয়েছে। মডিউলটি ইনস্টল না হলে, পার্ল মডিউল ইনস্টল করার জন্য এখানে কিছু প্রাথমিক নির্দেশাবলী রয়েছে।)

    তারপরে, নীচে সংজ্ঞায়িত ক্যাপচা চেক কার্যকারিতা কল করতে কোড যোগ করুন।

     # Check Required Fields
     &check_required;
    
     +# Check the captcha challenge and response.
     +&check_captcha;
     +
     # Send E-Mail
     &send_mail;
    
     # Return HTML Page or Redirect User
     &return_html;
    

    এখন, ক্যাপচা প্রতিক্রিয়া যাচাই করুন এবং যদি প্রতিক্রিয়া চ্যালেঞ্জের সাথে মেলে না তাহলে একটি ত্রুটি তৈরি করুন৷

     +##############################################################################
     +# Check the CAPTCHA response via the reCAPTCHA service.
     +sub check_captcha {
     +
     +      my $ua = LWP::UserAgent->new();
     +      my $result=$ua->post(
     +      'https://www.google.com/recaptcha/api/verify',
     +      {
     +          privatekey => 'your_private_key',
     +          remoteip   => $ENV{'REMOTE_ADDR'},
     +          challenge  => $Form{'recaptcha_challenge_field'},
     +          response   => $Form{'recaptcha_response_field'}
     +      });
     +
     +      if ( $result->is_success && $result->content =~ /^true/) {
     +              return;
     +      } else {
     +              &error('captcha_failed');
     +      }
     +}
     +
     # NOTE rev1.91: This function is no longer intended to stop abuse, that      #
     #    functionality is now embedded in the checks made on @recipients and the #
     #    recipient form field.                                                   #
    

    অবশেষে, কার্যকারিতা তৈরি করুন যা চেক ব্যর্থ হলে ত্রুটি বার্তাটি মুদ্রণ করে:

             if ($Config{'missing_fields_redirect'}) {
                 print "Location: " . &clean_html($Config{'missing_fields_redirect'}) . "\n\n";
             }
     +    }
     +    elsif ($error eq 'captcha_failed') {
     +            print <<"(END ERROR HTML)";
     +Content-type: text/html
     +
     +<html>
     + <head>
     +  <title>Error: Captcha Check Failed</title>
     + </head>
     + <body bgcolor=#FFFFFF text=#000000>
     + <center>
     +  <table border=0 width=600 bgcolor=#9C9C9C>
     +    <tr><th><font size=+2>Error: Captcha Check Failed</font></th></tr%gt;
     +   </table>
     +  <table border=0 width=600 bgcolor=#CFCFCF>
     +    <tr><td>The Captcha response of the form you submitted did not match the challenge.
     +     Please check the form and make sure that your response matches the challenge in the captcha image.
     +     You can use the browser back button to return to the form.
     +     </center%gt;
     +    </td></tr>
     +   </table>
     +  </center>
     + </body>
     +</html>
     +(END ERROR HTML)
     +    }
             else {
                  foreach $missing_field (@error_fields) {
                      $missing_field_list .= "<li>" . &clean_html($missing_field) . "\n";
     .
     .
     .
      </html>
     (END ERROR HTML)
             }
     -    }
     -
         exit;
     }
    

    এটাই! reCAPTCHA এখন আপনার সাইটে কাজ করা উচিত।

    আরও পড়া

  • চেহারা এবং অনুভূতি কাস্টমাইজ করা
  • টিপস এবং নির্দেশিকা
  • সমস্যা সমাধান