¿Cómo obtener Captcha en el formulario de registro del cliente?

8

Últimamente, hemos tenido problemas con los spammers en nuestro sitio web, queremos resolver esto usando una función captcha.

Habilité la función captcha en Sistema-> Configuración-> Cliente-> Configuración de cliente-> CAPTCHA

Ahora, tenemos un tema en el que el diseño / función captcha no está presente.

Así que intenté incluir esto en el tema y copié el código de la base. Ambos captcha.xmly captcha/zend.phtml.

Desafortunadamente, esto no funcionó, así que solo quería intentar agregar un reCAPTCHA manualmente al register.phtml.

Pero tanto en el directorio del tema como en el directorio base, la edición de customer/register.phtmlo persistent/customer/register.phtmlno cambió nada.

Entonces mi pregunta es, ¿cómo puedo hacer esto? Además, no tengo idea de qué información necesitan ustedes para poder ayudarme. Entonces pide cualquier cosa.

Sj03rs
fuente
Intenta editar en /app/design/frontend/base/default/template/opc/customer/form/register.phtml
Păduraru Liviu Robert

Respuestas:

0

StudioForty9 tiene una gran extensión GRATUITA que he estado usando en mi Magento 1.9: puede seleccionar en qué áreas del sitio aparece el captcha y hasta ahora me ha funcionado perfectamente.

Amasty también tiene una extensión Captcha invisible GRATUITA para M1, pero aún no lo he probado.

Steven J
fuente
0

Este script se utiliza para la validación como una validación predeterminada de magento. por favor úsalo

<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>
Shorabh
fuente
0

Utilice el siguiente código para la validación del lado del servidor.

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

reescribir la clase de registro

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

}

}

Archivo xml de diseño

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

Liz Eipe C
fuente