##############################################################
## Название: Контрольный вопрос при регистрации
## Автор: Druid
## Автор адаптация 2.4.x: DimaUZB2001
## Описание: Это защита от регистрации ботов.
## Сложность: легко
##############################################################
=======================================================================================================
====== Открываем language/ru/main.php. В самый конец добавляем:
=======================================================================================================
// The anti bots
$lang['ARE_U_HUMAN'] = 'Назовите спутник планеты Земля?';
$lang['ARE_U_HUMAN_EXPLAIN'] = 'Это защита от регистрации ботов, введите ответ на контрольный вопрос.';
$lang['ARE_U_HUMAN_WRONG'] = 'Вы не правильно ответили на "контрольный" вопрос.';
// Возможные ответы
$lang['HUMANIZER_ANSWERS'] = 'moon,луна';
=======================================================================================================
====== открываем styles/templates/default/usercp_register.tpl находим:
=======================================================================================================
{L_SYSTEM_TIMEZONE}:
{TIMEZONE_SELECT}
=======================================================================================================
====== после этого добавляем:
=======================================================================================================
=======================================================================================================
====== открываем includes/ucp/register.php находим:
=======================================================================================================
$pr_data = []; // data of the edited or registration profile
$db_data = []; // data for the database: registration or changed user data
$tp_data = []; // data for tpl
=======================================================================================================
====== ниже добавляем:
=======================================================================================================
// The anti bots
$humanizer_attribute = md5(
(string)$bb_cfg['board_startdate'] .
(string)$bb_cfg['announce_interval']
);
$ruhuman = $_POST[$humanizer_attribute] ?? '';
$ruhuman = trim(filter_var($ruhuman, FILTER_SANITIZE_FULL_SPECIAL_CHARS));
=======================================================================================================
====== находим:
=======================================================================================================
// Data validation
=======================================================================================================
====== Выше добавляем:
=======================================================================================================
if ($mode === 'register' && !IS_ADMIN) {
if ($ruhuman === '') {
$errors[] = $lang['ARE_U_HUMAN_WRONG'];
} else {
$input = mb_strtolower($ruhuman, 'UTF-8');
$answers = array_map('trim', explode(',', mb_strtolower($lang['HUMANIZER_ANSWERS'], 'UTF-8')));
if (!in_array($input, $answers, true)) {
$errors[] = $lang['ARE_U_HUMAN_WRONG'];
}
}
}
=======================================================================================================
====== находим:
=======================================================================================================
'SIG_DISALLOWED' => bf($pr_data['user_opt'], 'user_opt', 'dis_sig'),
=======================================================================================================
====== ниже добавляем:
=======================================================================================================
// The anti bots
'HUMANIZER'=> stripslashes(@$ruhuman),
'S_HUMANIZER_ATTRIBUTE' => @$humanizer_attribute,
=======================================================================================================
====== находим:
=======================================================================================================
'PR_USER_ID' => $pr_data['user_id'],
'U_RESET_AUTOLOGIN' => LOGIN_URL . "?logout=1&reset_autologin=1&sid={$userdata['session_id']}",
]);
=======================================================================================================
====== ниже добавляем:
=======================================================================================================
// Anti-bot section: включаем блок для страницы регистрации
if ($mode === 'register' && !IS_ADMIN) {
$template->assign_block_vars('switch_register', [
'HUMANIZER_NAME' => $humanizer_attribute ?? '',
'HUMANIZER_LABEL' => $lang['ARE_U_HUMAN'] ?? 'Are you human?',
]);
}