############################################################## ## Название: Контрольный вопрос при регистрации ## Автор: 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?', ]); }