Sign in

Зарегистрируйтесь, чтобы стать полноправным участником сообщества Masterpro.ws.

Fancy AJAX Contact Form - модуль для Joomla 3. Подключаем recaptcha

Продолжаем работать над Fancy AJAX Contact Form - новым модулем Joomla 3.

Fancy AJAX Contact Form with recaptcha

Начало разработки

Окончание разработки

 

Вполне вероятно, реализованный по дефолту арифметический пример в контексте защиты от спам-ботов покажется вам нелучшим решением... ок, давайте прикрутим к нашей формочке recaptcha, для Joomla это сегодня стандарт по умолчанию. Хотя, возможно, вы предпочитаете keycaptcha? - что ж, это дело вкуса.. и тем не менее. Recaptcha-plugin должен быть у вас уже включен, private и public keys - получены у Google и введены в соответствующие поля плагина. Отлично, дальнейшие наши шаги после установки модуля - будут следующими:

 

1. Стираем нашу арифметическую капчу, попросту убираем эти строчки из файла mod_contactform_masterpro.php:

 

$n1 = rand(1,20);
$n2 = rand(1,20);
$session->set('expect', $n1 + $n2, SESSION_NAMESPACE);

 

2. Далее, в самом конце области php этого же файла, сразу после

 

$category_name = $params->get('email1');
$category_name1 = $params->get('email2');
$category_name2 = $params->get('email3');

 

добавляем эти строчки:

 

JPluginHelper::importPlugin('captcha');
$dispatcher = JEventDispatcher::getInstance();
$dispatcher->trigger('onInit','dynamic_recaptcha_1');

 

3. Находим текстовое поле "message":

 

<tr>
<td valign="top"><label for="message">Сообщение</label></td>
<td><textarea name="message" id="message" class="validate[required]" cols="35" rows="5"><?=$_SESSION['post']['message']?></textarea></td>
<td valign="top">&nbsp;</td>
</tr>

 

и размещаем, сразу после него, собственно recaptcha:

 

<tr>
<td colspan="3"><div id="dynamic_recaptcha_1"></div></td>
</tr>

 

4. Удаляем ненужное теперь:

 

<tr>
<td><label for="captcha"><?=$n1?> + <?=$n2?> =</label></td>
<td><input type="text" class="validate[required,custom[onlyNumber]]" name="captcha" id="captcha" /></td>
<td valign="top">&nbsp;</td>
</tr>

 

5. С этим все, переходим к редактуре submit.php. Убираем за ненадобностью:

 

if($input->getInt('captcha') != $session->get('expect', null, SESSION_NAMESPACE))
$err[] = 'The captcha code is wrong!';

 

и добавляем на то же место (примерно 43 строка):

 

JPluginHelper::importPlugin('captcha');
$dispatcher = JDispatcher::getInstance();
$res = $dispatcher->trigger('onCheckAnswer', $input->get('recaptcha_response_field'));
if(!$res[0]){
$err[] = 'The captcha code is wrong!';
}

 

6. Теперь нам с вами осталось отредактировать лишь script.js. Строчку

 

jQuery.validationEngine.buildPrompt("#captcha","* Неправильное значение!","error");

 

меняем на

 

jQuery.validationEngine.buildPrompt('#recaptcha_response_field',"* Неправильное значение! Нажмите генерацию нового кода перед повтороной отправкой формы","error");

 

Перезагружаем страничку и любуемся тем, что получилось. Впрочем, если хардкодить лениво - вы можете скачать уже готовый модуль формочки с подключенной recaptcha на странице форума.

 

Оставить комментарий

Добавьте ваш комментарий