Wie bekomme ich Captcha in das Kundenregistrierungsformular?


8

In letzter Zeit haben wir Probleme mit Spammern auf unserer Website. Wir möchten dies mithilfe einer Captcha-Funktion beheben.

Ich habe die Captcha-Funktion unter System-> Konfiguration-> Kunde-> Kundenkonfiguration-> CAPTCHA aktiviert

Jetzt haben wir ein Thema, in dem das Captcha-Layout / die Captcha-Funktion nicht vorhanden ist.

Also habe ich versucht, dies in das Thema zu bekommen und den Code von der Basis kopiert. Beide captcha.xmlund captcha/zend.phtml.

Leider hat dies nicht funktioniert, deshalb wollte ich nur versuchen, ein reCAPTCHA manuell zum hinzuzufügen register.phtml.

Aber sowohl im Themenverzeichnis als auch im Basisverzeichnis hat das Bearbeiten customer/register.phtmloder persistent/customer/register.phtmlnichts geändert.

Meine Frage ist also, wie kann ich das machen? Außerdem habe ich keine Ahnung, welche Informationen ihr braucht, um mir helfen zu können. Bitten Sie also um etwas.


Versuchen Sie, in /app/design/frontend/base/default/template/opc/customer/form/register.phtml
Păduraru Liviu Robert

Antworten:


0

StudioForty9 hat eine große FREE Erweiterung , dass ich 1.9 auf meinem Magento benutze - Sie können auswählen , für mich einwandfrei so weit , welche Bereiche der Website die Captcha zeigt sich in und es hat funktioniert.

Amasty hat auch eine KOSTENLOSE unsichtbare Captcha-Erweiterung für M1, aber ich habe dies noch nicht ausprobiert.


0

Dieses Skript wird zur Validierung wie eine Standardvalidierung von Magento verwendet. bitte benutze es.

<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>

0

Bitte verwenden Sie den folgenden Code für die serverseitige Validierung.

<models> <validatecaptcha> <class>Addpeople_Validatecaptcha_Model</class> <resourceModel>validatecaptcha_mysql4</resourceModel> </validatecaptcha> <customer> <rewrite> <customer>Addpeople_Validatecaptcha_Model_Customer_Customer</customer> </rewrite> </customer> </models>

Registrierungsklasse neu schreiben

<?php class Addpeople_Validatecaptcha_Model_Customer_Customer extends Mage_Customer_Model_Customer {
/**
 * Validate customer attribute values.
 * For existing customer password + confirmation will be validated only when password is set (i.e. its change is requested)
 *
 * @return bool
 */
public function validate()
{
    $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(self::MINIMUM_PASSWORD_LENGTH))) {
        $errors[] = Mage::helper('customer')
            ->__('The minimum password length is %s', self::MINIMUM_PASSWORD_LENGTH);
    }
    if (strlen($password) && !Zend_Validate::is($password, 'StringLength', array('max' => self::MAXIMUM_PASSWORD_LENGTH))) {
        $errors[] = Mage::helper('customer')
            ->__('Please enter a password with at most %s characters.', self::MAXIMUM_PASSWORD_LENGTH);
    }
    $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.');
    }

    if( Mage::getStoreConfig('validate_captcha/server_side_validation/enabled') ) {
        $errors = $this->validateCaptcha($errors);
    }

    if (empty($errors)) {
        return true;
    }
    return $errors;
}

private function validateCaptcha( $errors ) {

    /* additional reCAPTCHA validation */

    $action = Mage::app()->getRequest()->getActionName();
    if ( $action == 'createpost' ) {

        $captcha = Mage::app()->getRequest()->getPost('g-recaptcha-response', 1);
        if ( $captcha == '' ) {

            $errors[] = Mage::helper('customer')->__('Please check the reCAPTCHA field to continue.');
        } else {
            $params = array();
            $params['secret'] =  Mage::getStoreConfig('validate_captcha/server_side_validation/secret_key');
            $params['response'] = Mage::app()->getRequest()->getPost('g-recaptcha-response', 1);
            $params['remoteip'] = $_SERVER['REMOTE_ADDR'];

            $params_string = http_build_query($params);
            $url = 'https://www.google.com/recaptcha/api/siteverify?'.$params_string;

            $ch = curl_init();
            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 ) {

                // This will be shown at the top of the registration page
                $errors[] = Mage::helper('customer')->__('reCAPTCHA unable to verify.');
            }
        }
    }

    return $errors;

}

}}

Layout-XML-Datei

<customer_account_create> <reference name="form.additional.info"> <block type="core/template" name="captcha_js" template="validatecaptcha/captchajs.phtml" /> <block type="core/template" name="validate_captcha" template="validatecaptcha/index.phtml"/> </reference> </customer_account_create>

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.