Veuillez utiliser le code suivant pour la validation côté serveur.
<models>
<validatecaptcha>
<class>Addpeople_Validatecaptcha_Model</class>
<resourceModel>validatecaptcha_mysql4</resourceModel>
</validatecaptcha>
<customer>
<rewrite>
<customer>Addpeople_Validatecaptcha_Model_Customer_Customer</customer>
</rewrite>
</customer>
</models>
réécrire la classe d'inscription
<?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;
}
}
Fichier xml de mise en page
<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>