Итак, встраивание reCAPTCHA в оправку сообщений незарегенными пользователями
Править необходимо следующие файлы:
posting.php (в корне форума)
posting_body.html (styles/your_template/template)
Ну конечно же делаем бекапы обоих файлов. Данное описание ТОЛЬКО для тех у кого уже стоит капча на регистрацию. Потому как описывать процесс получения ключей и копирования себе recaptchalib.php я не буду.
Для начала правим posting_body.html
1. Ищем там <!-- IF S_CONFIRM_CODE -->
И заменяем эту строку на <!-- IF RECAPTCHA_CODE -->
2. В этом же блоке удаляем две строки
<td class="row1"><b class="genmed">{L_CONFIRM_CODE}: </b><br /><span class="gensmall">{L_CONFIRM_CODE_EXPLAIN}</span></td>
<td class="row2"><input class="post" type="text" name="confirm_code" size="8" maxlength="8" /></td>
Вместо них туда пишем
<td class="row1"><span class="gen">{L_CONFIRM_CODE}: * </span></td>
<td class="row2">{RECAPTCHA_CODE}</td>
Теперь правим posting.php
1. В самом начале файла после <?php и каких-то комментариев пишем
require_once($phpbb_root_path . 'includes/captcha/recaptchalib.php'); //(проследите, что бы путь был верный)
$recaptcha_public_key = 'паблик кей';
$recaptcha_private_key = 'приват кей';
$recaptcha_code = null;
Ключи надо написать конечно же, которые вы получили.
2. Находим $solved_captcha = false; и комментируем
3. Находим блок
if ($config['enable_post_confirm'] && !$user->data['is_registered'] && in_array($mode, array('quote', 'post', 'reply')))
И все его внутренности комментируем или удаляем.
А вместо них пишем туда:
Код: Выделить всё
$recaptcha_response = recaptcha_check_answer ($recaptcha_private_key, $user->ip, $_POST['recaptcha_challenge_field'], $_POST['recaptcha_response_field']);
if (!$recaptcha_response->is_valid)
{
$recaptcha_code = recaptcha_get_html ($recaptcha_public_key, $recaptcha_response->error);
$error[] = $user->lang['CONFIRM_CODE_WRONG'];
}
Код: Выделить всё
if ($config['enable_post_confirm'] && !$user->data['is_registered'] && in_array($mode, array('quote', 'post', 'reply')))
{
$recaptcha_response = recaptcha_check_answer ($recaptcha_private_key, $user->ip, $_POST['recaptcha_challenge_field'], $_POST['recaptcha_response_field']);
if (!$recaptcha_response->is_valid)
{
//$error = TRUE;
$recaptcha_code = recaptcha_get_html ($recaptcha_public_key, $recaptcha_response->error);
$error[] = $user->lang['CONFIRM_CODE_WRONG'];
}
}
if ($config['enable_post_confirm'] && !$user->data['is_registered'] && $solved_captcha === false && ($mode == 'post' || $mode == 'reply' || $mode == 'quote'))
Заменяем на
if ($config['enable_post_confirm'] && !$user->data['is_registered'] && ($mode == 'post' || $mode == 'reply' || $mode == 'quote'))
5. Опять же внутренности этого блока комментируем или удаляем. А вместо них
Код: Выделить всё
if (!$recaptcha_code)
$recaptcha_code = recaptcha_get_html ($recaptcha_public_key, null);
$template->assign_vars(array(
'RECAPTCHA_CODE' => $recaptcha_code));
Код: Выделить всё
if ($config['enable_post_confirm'] && !$user->data['is_registered'] && ($mode == 'post' || $mode == 'reply' || $mode == 'quote'))
{
if (!$recaptcha_code)
$recaptcha_code = recaptcha_get_html ($recaptcha_public_key, null);
$template->assign_vars(array(
'RECAPTCHA_CODE' => $recaptcha_code));
}
Ну вот и все. Ошибок пока не обнаружил. Так что, если кто-то что-то найдет, просьба, сообщайте.
Работает сейчас на моем форуме: http://jesus-life.org/forum/index.php

