Come ottenere Captcha nel modulo di registrazione del cliente?


8

Ultimamente, abbiamo riscontrato problemi con gli spammer sul nostro sito Web, vogliamo risolverlo utilizzando una funzione captcha.

Ho abilitato la funzione captcha in Sistema-> Configurazione-> Cliente-> Configurazione cliente-> CAPTCHA

Ora, abbiamo un tema in cui il layout / funzione captcha non è presente.

Quindi ho provato a inserire questo nel tema e ho copiato il codice dalla base. Entrambi captcha.xmle captcha/zend.phtml.

Sfortunatamente, questo non ha funzionato, quindi volevo solo provare ad aggiungere un reCAPTCHA manualmente a register.phtml.

Ma sia nella directory dei temi che nella directory di base, modificando customer/register.phtmlo persistent/customer/register.phtmlnon è cambiato nulla.

Quindi la mia domanda è: come posso farlo? Inoltre, non ho idea di quali informazioni avete bisogno per aiutarmi. Quindi chiedi di tutto.


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

Risposte:


0

StudioForty9 ha una fantastica estensione GRATUITA che sto usando sul mio Magento 1.9 - Puoi selezionare in quali aree del sito viene visualizzato il captcha e finora ha funzionato perfettamente per me.

Amasty ha anche un'estensione Captcha invisibile GRATUITA per M1, ma non l'ho ancora provato.


0

Questo script utilizza per la convalida come una convalida predefinita di magento. per favore usalo.

<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

Utilizzare il codice seguente per la convalida lato server.

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

riscrivi la classe di registrazione

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

}

}

File XML di layout

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

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.