গুগল পুনঃপঠনকে কীভাবে যাচাই করবেন


10

আমি আমাদের সাথে যোগাযোগের ফর্মটিতে গুগল রিক্যাপচা যোগ করেছি তবে ক্যাপচা ছাড়াই মানও জমা দিচ্ছে। ক্যাপচার জন্য আমি আমার যোগাযোগ পৃষ্ঠায় নিম্নলিখিত কোডগুলি ব্যবহার করেছি:

 <div class="g-recaptcha" data-sitekey="XXXXXXXXXX"></div> 
 <script src='https://www.google.com/recaptcha/api.js'></script>

এই দুটি কোড আমি ব্যবহার করেছি। দয়া করে আমাকে বলুন আমি কীভাবে ক্যাপচাকে বৈধতা দিতে পারি।


1
এই এক্সটেনশনটি ইনস্টল magentocommerce.com/magento-connect/recaptcha-1.html
রঘু

এটি আপনার ক্যাপচাকে বৈধ করবে
রঘু

উত্তর:


9

আপনার এই কোডটি চেষ্টা করা উচিত: আমি এটি আমার সাইটে ব্যবহার করছি।

<script>
window.onload = function() {
  var recaptcha = document.forms["contactForm"]["g-recaptcha-response"];
  recaptcha.required = true;
  recaptcha.oninvalid = function(e) {

    alert("Please complete the captcha");
   }
}
</script> 

এটি থিমের আমাদের সাথে যোগাযোগ করুন পৃষ্ঠাতে কাজ করবে ... ??
মণীশ গৌর

হ্যাঁ .. এটি কাজ করে কিনা আমাকে জানতে দিন
এনআইডি

2
তারপরে যোগাযোগ-ফর্মের সাথে ফর্ম-বৈধতা প্রতিস্থাপন করুন
এনআইডি

1
আপনি কেবল গুগল অ্যানালিটিক্সের জন্য একটি এক্সটেনশন ইনস্টল করতে পারেন। magentocommerce.com/magento-connect/… । গুগল ইতিমধ্যে এই সমস্ত জিনিস ট্র্যাকিং একটি দুর্দান্ত কাজ করে। পরে যদি আপনি আরও শক্তিশালী কিছু চান, তবে অর্থ প্রদানের এক্সটেনশনগুলি রয়েছে যা আরও বেশি করে।
এনআইডি

1
এটি হতে পারে আপনাকে সাহায্য করবে .. magento.stackexchange.com/questions/37363/…
এনআইডি

7

এই স্ক্রিপ্টটি বৈধকরণের জন্য গুগল রিপ্যাচচারের জন্য ম্যাজেন্টোর ডিফল্ট বৈধতার মতো ব্যবহার। দয়া করে এটি ব্যবহার করুন।

<form name="freeeventForm" id="freeeventForm">
    <div id="RecaptchaField"></div>
    <input type="hidden" class="validate-reCAPTCHA">
</form>
        <script src="https://www.google.com/recaptcha/api.js?onload=CaptchaCallback&render=explicit" async defer></script>
    <script type="text/javascript">
        //< ![CDATA[
            var CaptchaCallback = function() {  
            grecaptcha.render('RecaptchaField', {'sitekey' : '6LeuiDwUAAAAALByt-xxxxxxxxxxx-xUsZHFkeEP'});
        };
        var customForm = new VarienForm('freeeventForm');
        Validation.add('validate-reCAPTCHA','reCAPTCHA is mandatory',function(){
            var response = grecaptcha.getResponse();
            if (response.length === 0) {
                    return false;
            }
            return true;
    });
        //]]>
    </script>

আপনাকে অনেক ধন্যবাদ, প্রোটোটাইপ / ভ্যালিডেট.জেএস ব্যবহার করে ম্যাজেন্টোতে রিপ্যাপ্টা যাচাই করার জন্য এটি সঠিক উত্তর। মোহন মত কাজ!
ওয়ালিদ আসেন্দ্র

এটি আমার গ্রহণযোগ্য উত্তর হওয়া উচিত, সফলভাবে আমার উদ্দেশ্যগুলির জন্য অভিযোজিত
অ্যাজমেডওয়ে

একই অবস্থা. ধন্যবাদ
বিপ্লব রাউট

আমি এটি আমার বিলিং.এফটিএমএল ফাইলে ব্যবহার করতে চাই, আপনি কি দয়া করে আমাকে পরামর্শ দিতে পারেন আমি এই কোডটি ব্যবহার করছি তবে পুনরায় সংশোধনটি বৈধ নয়। ; <স্ক্রিপ্ট> উইন্ডো.অনলড = ফাংশন () var // ভেরি রেক্যাপ্টা = ডকুমেন্ট.ফর্মস ["কো-বিলিং-ফর্ম"] ["জি-রেকাপ্টা-প্রতিক্রিয়া"]; var recaptcha = jQuery ('। g-recaptcha-প্রতিক্রিয়া')। ভাল (); recaptcha.required = সত্য; recaptcha.oninuthor = ফাংশন (ঙ) {সতর্কতা ("দয়া করে ক্যাপচাটি সম্পূর্ণ করুন"); প্রত্যাবর্তন মিথ্যা; }} </script> `
আবী ​​শর্মা

7

উপরে গৃহীত জাভাস্ক্রিপ্ট সমাধানটি অবশ্যই আমার মতে যাওয়ার উপায় নয়। জেএস ব্যবহার না করে এমন কোনও বট (যা বেশিরভাগ) কেবল আপনার বৈধতাটিকে বাইপাস করবে এবং আপনি যে সমস্ত স্প্যাম ব্লক করার চেষ্টা করছেন তা পেয়ে যাবেন। সর্বদা সর্বদা সার্ভারে বৈধতা দিন। জেএস বৈধতা কেবলমাত্র একটি ইউএক্স প্রথম ধাপ।

যাইহোক, একাধিক সমাধান রয়েছে তবে বেশ কয়েক ঘন্টা গবেষণার পরে ম্যাজেন্টো 1.9 এ আমার জন্য কী কাজ করেছে তা এখানে। এটি মূলত উপরের মাইকের উত্তরের ভিত্তিতে নির্মিত, তবে সিআরএল-এর জন্য ফাইল_গেট_কন্টেন্টগুলি সরিয়ে দেয় কারণ পূর্ববর্তী ফাংশনটি সাধারণত আপনার সার্ভার কনফিগারেশনের উপর নির্ভর করে আপনাকে http র‌্যাপার ত্রুটি দেয়।

একটি ফোল্ডার / অ্যাপ্লিকেশন / কোড / স্থানীয় / আপনারভেন্ডরনাম / ভ্যালিডেটক্যাপ্টা / তৈরি করে আপনার নিজস্ব মডিউল তৈরি করুন

আপনার নতুন ভ্যালিডেপট্যাচা ফোল্ডারে একটি গ্রাহক। পিএফপি ফাইল সহ একটি মডেল ফোল্ডার যুক্ত করুন। এটি ম্যাজেন্টো দ্বারা সরবরাহিত মূল গ্রাহক। ফাইল ফাইলকে ওভাররাইড করতে ব্যবহৃত হবে।

এই কোডটি অনুলিপি করুন এবং আটকান:

<?php
class YourVendorName_ValidateCaptcha_Model_Customer extends Mage_Customer_Model_Customer {

    /**
     * Validate customer attribute values.
     *
     * @return bool
     */
    public function validate()
    {
        // This section is from the core file
        $errors = array();
        if (!Zend_Validate::is( trim($this->getFirstname()) , 'NotEmpty')) {
            $errors[] = Mage::helper('customer')->__('The first name cannot be empty.');
        }

        if (!Zend_Validate::is( trim($this->getLastname()) , 'NotEmpty')) {
            $errors[] = Mage::helper('customer')->__('The last name cannot be empty.');
        }

        if (!Zend_Validate::is($this->getEmail(), 'EmailAddress')) {
            $errors[] = Mage::helper('customer')->__('Invalid email address "%s".', $this->getEmail());
        }

        $password = $this->getPassword();
        if (!$this->getId() && !Zend_Validate::is($password , 'NotEmpty')) {
            $errors[] = Mage::helper('customer')->__('The password cannot be empty.');
        }
        if (strlen($password) && !Zend_Validate::is($password, 'StringLength', array(6))) {
            $errors[] = Mage::helper('customer')->__('The minimum password length is %s', 6);
        }
        $confirmation = $this->getPasswordConfirmation();
        if ($password != $confirmation) {
            $errors[] = Mage::helper('customer')->__('Please make sure your passwords match.');
        }

        $entityType = Mage::getSingleton('eav/config')->getEntityType('customer');
        $attribute = Mage::getModel('customer/attribute')->loadByCode($entityType, 'dob');
        if ($attribute->getIsRequired() && '' == trim($this->getDob())) {
            $errors[] = Mage::helper('customer')->__('The Date of Birth is required.');
        }
        $attribute = Mage::getModel('customer/attribute')->loadByCode($entityType, 'taxvat');
        if ($attribute->getIsRequired() && '' == trim($this->getTaxvat())) {
            $errors[] = Mage::helper('customer')->__('The TAX/VAT number is required.');
        }
        $attribute = Mage::getModel('customer/attribute')->loadByCode($entityType, 'gender');
        if ($attribute->getIsRequired() && '' == trim($this->getGender())) {
            $errors[] = Mage::helper('customer')->__('Gender is required.');
        }

        // additional reCAPTCHA validation
        // this should actually be in it's own function, but I've added 
        // it here for simplicity

        // Magento uses this method for a few different requests, so make
        // sure it's limited only to the 'createpost' action
        $action = Mage::app()->getRequest()->getActionName();
        if ( $action == 'createpost' ) { // restrict to the registration page only
            $captcha = Mage::app()->getRequest()->getPost('g-recaptcha-response', 1);
            if ( $captcha == '' ) {
                // if the field is empty, add an error which will be
                // displayed at the top of the page
                $errors[] = Mage::helper('customer')->__('Please check the reCAPTCHA field to continue.');
            } else {
                $secret = 'your-secret-key-goes-here';
                $url = 'https://www.google.com/recaptcha/api/siteverify?secret=' . $secret . '&response=' . $captcha . '&remoteip=' . $_SERVER["REMOTE_ADDR"];

                $ch = curl_init();
                // if you're testing this locally, you'll likely need to 
                // add your own CURLOPT_CAINFO parameter or you'll get
                // SSL errors
                curl_setopt( $ch, CURLOPT_URL, $url );
                curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1);
                $response = curl_exec( $ch );

                $result = json_decode( $response, true );
                if ( trim( $result['success'] ) != true ) {
                    // Add reCAPTCHA error
                    // This will be shown at the top of the registration page
                    $errors[] = Mage::helper('customer')->__('reCAPTCHA unable to verify.');
                }
            }
        }

        // now return the errors with your reCAPTCHA validation as well
        if (empty($errors)) {
            return true;
        }
        return $errors;
    }


}

এখন আপনার মডিউলে একটি ইত্যাদি ফোল্ডার যুক্ত করুন এবং নিম্নলিখিতগুলির সাথে একটি কনফিগার.এক্সএমএল তৈরি করুন:

<?xml version="1.0"?>
<config>
    <modules>
        <YourVendorName_ValidateCaptcha>
            <version>1.0</version>
        </YourVendorName_ValidateCaptcha>
    </modules>

    <global>
       <models>
          <customer>
              <rewrite>
                  <customer>YourVendorName_ValidateCaptcha_Model_Customer</customer>
              </rewrite>
          </customer>
       </models>
    </global>
</config>

এরপরে আপনাকে আপনার থিমের শিরোনামে জেএস যুক্ত করতে হবে। অ্যাপ্লিকেশন / ডিজাইন / ফ্রন্টএন্ড / ডিফল্ট / আপনার নিজের / টেম্পলেট / পৃষ্ঠা / এইচটিএমএল / হেড.এফটিএমএল এর শেষে এই ডানদিকে যুক্ত করুন। আপনার কাছে এই ফাইলটি না থাকলে এটি বেস ফাইলগুলি থেকে অনুলিপি করুন। যদিও বেস ফাইলগুলি ওভাররাইট করবেন না। সর্বদা নিজের তৈরি!

<?php
/* reCAPTCHA */
if ( strpos( Mage::helper('core/url')->getCurrentUrl(), 'account/create') != false ) { ?>   
<script src="https://www.google.com/recaptcha/api.js" async defer></script>
<?php } ?>

এখন অ্যাপ্লিকেশন / নকশা / সীমানা / ডিফল্ট / আপনার উত্স / টেম্পলেট / ধ্রুবক / গ্রাহক / ফর্ম / নিবন্ধ.এইচটিএমএল নীচে কাছাকাছি বোতাম সেট ডিভের আগে এই ডান যুক্ত করুন:

    <div class="g-recaptcha" data-sitekey="your-site-key-goes-here"></div>
    <span id="captcha-required" style='display:none; color:#ff0000'><?php echo $this->__('Please Fill Recaptcha To Continue'); ?></span>

প্রায় শেষ! এখন কেবল নীচের সাথে একটি অ্যাপ্লিকেশন / ইত্যাদি / মডিউল / আপনারভেন্ডরনাম / ভ্যালিডেটক্যাপচা.এক্সএমএল তৈরি করে আপনার নতুন মডিউলটি নিবন্ধ করুন:

<?xml version="1.0"?>
<config>
    <modules>
        <YourVendorName_ValidateCaptcha>
            <active>true</active>
            <codePool>local</codePool>
        </YourVendorName_ValidateCaptcha>
    </modules>
</config>

আপনার পছন্দের সাথে আপনার ভেন্ডর নামটি প্রতিস্থাপন করুন। আপনার চূড়ান্ত কাঠামোটি এমন কিছু হওয়া উচিত:

- app
  - code
    - local
      - YourVendorName
        - ValidateCaptcha
          - etc
            config.xml
          - Model
            Customer.php
- design
  - frontend
    - default
      - YOURTHEME
        - template
          - customer
            - form
              register.phtml
          - page
            - html
              head.phtml
          - persistent
            - customer
              - form
                register.phtml
- etc
  - modules
    YourVendorName_ValidateCaptcha.xml

6

আমি যোগাযোগের ফর্মে রিস্যাপচা ব্যবহার করেছি ..

<form action="<?php echo Mage::getUrl('mcrecaptcha/index/save'); ?>" id="contactForm" method="post" onSubmit="return checkcaptcha() ;">
    <ul class="form-list">
            <li class="fields">
                <div class="field">
                    <div class="input-box">
                        <input placeholder="Name" name="name" id="name" title="<?php echo Mage::helper('contacts')->__('Name') ?>" value="<?php echo $this->escapeHtml($this->helper('contacts')->getUserName()) ?>" class="input-text required-entry" type="text" />
                    </div>
                </div>
                <div class="field">
                    <div class="input-box">
                        <input placeholder="Email" name="email" id="email" title="<?php echo Mage::helper('contacts')->__('Email') ?>" value="<?php echo $this->escapeHtml($this->helper('contacts')->getUserEmail()) ?>" class="input-text required-entry validate-email contact_us_margin_top" type="text" />
                    </div>
                </div>
            </li>
            <li>
                <div class="input-box">
                    <input placeholder="Telephone" name="telephone" id="telephone" title="<?php echo Mage::helper('contacts')->__('Telephone') ?>" value="" class="input-text contact_us_margin_top" type="text" />
                </div>
            </li>
            <li class="wide">
                <div class="input-box">
                    <textarea placeholder="Comment" name="comment" id="comment" title="<?php echo Mage::helper('contacts')->__('Comment') ?>" class="required-entry input-text contact_us_margin_top" cols="5" rows="3" style="width:100%;"></textarea>
                </div>
            </li>
               <li id="rcode">  
                        <div class="captcha">
                                <div class="g-recaptcha contact_us_margin_top" data-sitekey="6Ldi8xsUAAAAAHsK15YxKsdhIn6lGk-RUIk222-f"> </div>
                        </div>
                        <div class="buttons-set contact_us_margin_top">
                            <input type="text" name="hideit" id="hideit" value="" style="display:none !important;" />
                            <button type="submit" title="<?php echo Mage::helper('contacts')->__('Submit') ?>" class="button" onClick="_gaq.push(['_trackEvent', 'Submit', 'contacts click','Contact Us'])"><span><span><?php echo Mage::helper('contacts')->__('Submit') ?></span></span></button>
                        </div>
                        <span class='captcha-error'><?php echo Mage::helper('contacts')->__('Please check the the captcha form.') ?></span>
                </li>      
        </ul>
</form>

<script>
function checkcaptcha()
{
    if((jQuery('#g-recaptcha-response').val())=='')
    {
        jQuery('.captcha-error').css('display','block');
        return false;
    }
    else
    {
        jQuery('.captcha-error').css('display','none');
    }

}
</script>

আমি থিমটির বিল্ট যোগাযোগের আকারে ক্যাপচা কোডটি প্রয়োগ করেছি .... আপনি কি দয়া করে আমার থিমটি আমাকে বলবেন? আমি ম্যাজেন্টোতে শিক্ষানবিস তাই দয়া করে আমাকে সহায়তা করুন
মণীশ গৌর

আমি এই কোডটি যোগাযোগের আকারে অন্তর্নির্মিত করি
জিগস পারমার

আপনি শুধু আপনার আকারে এই কোড বাস্তবায়ন এবং শুধুমাত্র ডেটা-sitekey পরিবর্তন করতে হবে
Jigs Parmar

আপনি যদি আপনার উত্তর পেয়ে থাকেন তবে আমার উত্তরটি গ্রহণ করুন
জিগস পারমার

হ্যাঁ ......... আপনি কি দয়া করে এই প্রশ্নের উত্তরটি সন্ধান করবেন magento.stackexchange.com/Qestions/183456/…
মনীশ গৌর

3

ক্যাপচাকে বৈধ করতে, আপনার ফর্মের মানগুলি এবং বৈধতা সংরক্ষণ করার জন্য একটি সংরক্ষণ নিয়ন্ত্রক তৈরি করুন।

namespace Mike\SampleModule\Controller;

class Save extends \Magento\Framework\App\Action\Action
{
/**
* @var Google reCaptcha Options
*/
private static $_siteVerifyUrl = "https://www.google.com/recaptcha/api/siteverify?";
private $_secret;
private static $_version = "php_1.0";
/**
* Save Form Data
*
* @return array
*/
public function execute()
{
$captcha = $this->getRequest()->getParam('g-recaptcha-response');
$secret = "<--your secret key-->"; //Replace with your secret key
$response = null;
$path = self::$_siteVerifyUrl;
$dataC = array (
'secret' => $secret,
'remoteip' => $_SERVER["REMOTE_ADDR"],
'v' => self::$_version,
'response' => $captcha
);
$req = "";
foreach ($dataC as $key => $value) {
     $req .= $key . '=' . urlencode(stripslashes($value)) . '&';
}
// Cut the last '&'
$req = substr($req, 0, strlen($req)-1);
$response = file_get_contents($path . $req);
$answers = json_decode($response, true);
if(trim($answers ['success']) == true) {
    // Captcha Validated
    // Save Form Data
}else{
    // Display Captcha Error
}
}
}

আপনি উপরের নমুনা কোডগুলিতে সাইটের কী এবং গোপন কীটি প্রতিস্থাপন করেছেন তা নিশ্চিত করুন।


আমি কীভাবে এই ফর্মটির সাথে আমার ফর্মটি লিঙ্ক করব? ফর্মটি একটি পোষ্ট পদ্ধতিতে = "<? Php প্রতিধ্বনি $ এটি-> getPostActionUrl ()?>" এ কর্ম করতে চলেছে।
চিনাবাদাম

1

জাতীয় পরিচয়পত্র,

আপনার রেক্যাপ্টা স্ক্রিপ্ট স্নিপিট দেখে মনে হচ্ছে এটি কাজ করবে তবে স্পষ্ট করে কি এটি ম্যাজেন্টোর উত্স হেড.এফটিএমএলে প্রবেশ করেছে? (বা form.phtml?) সবুজ প্রকারে Magento ডিফল্ট প্রাক পিএইচপি এর ঠিক নীচে স্থাপন করা হবে কারণ এটির একটি।

প্রশ্ন বিশেষত পিএইচপি প্রবেশের সময় কি তাৎক্ষণিক পিএইচপি মন্তব্য বিভাগের পরে এটি প্রবেশ করা নিয়মিত অনুশীলন যা নীচে এই উদাহরণটির মতো বেশিরভাগ টেম্পলেট উত্স পৃষ্ঠাগুলির জন্য শীর্ষে ম্যাগেন্টো শীর্ষে রাখে?

ম্যাজেন্টো এখানে পিএইচপি ট্যাগগুলিতে অস্বীকার কোড। এখানে রেসিপচা স্নিপিট স্ক্রিপ্ট এখানে রাখুন?

এছাড়াও ম্যাজেন্টোর পদ্ধতিগুলির কাঠামোর জন্য আরও রেখাযুক্ত নীচে এই ভিডিওতে এই পুনঃক্যাপচা প্রতিক্রিয়া যাচাইকরণ কোডটি কী করে তোলে: এই টিউটোরিয়ালটি প্রথম লাইনে $ reCaptcha = $ _POST লাইনটি ব্যবহার করে ?

শেষ প্রশ্নের বিকল্প: আমি যদি এই পুনঃক্যাপচা প্রতিক্রিয়া যাচাইকরণ করতে পিএইচপি সংস্করণ ব্যবহার করি তবে পিএইচপি এর শীর্ষ ম্যাজেন্টো ডিফল্ট টেম্পলেট সবুজ মন্তব্য বিভাগের পরে পিএইচপি কোড স্নিপিট প্রবেশ করানো হবে?

কিছু কোড আমি চাই না বার্তাগুলি সামনের প্রান্তে প্রদর্শিত হতে পারে কারণ ব্যবহারকারীরা প্রতিটি ক্ষেত্রের নীচে যে সমস্ত তথ্য না বলে সমস্ত তথ্য প্রবেশ না করে তা ইতিমধ্যে তার লাল সতর্কতা দেয়, আমি কেবল এই পরিচিতি ফর্মের জন্য কাজ করতে পুনরায় ক্যাপচা পেতে চাই। তবে এমন এক উপায়ে যা আমি ভবিষ্যতের ব্যবহারের জন্যও বুঝতে পারি। আপনার উপায় কি একজন ডেভেলপার বা প্রোগ্রামার হিসাবে তৈরি করেছেন?

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.