Контрольный вопрос при регистрации

druid

Пользователь
#1
Открываем language/lang_russian/lang_main.php
В самый конец добавляем
PHP:
// The anti bots
$lang['ARE_U_HUMAN'] = 'Назовите спутник планеты Земля?';
$lang['ARE_U_HUMAN_EXPLAIN'] = 'Это защита от регистрации ботов, введите ответ на контрольный вопрос.';
$lang['ARE_U_HUMAN_WRONG'] = 'Вы не правильно ответили на "контрольный" вопрос.';

// Возможные ответы
$lang['HUMANIZER_ANSWERS'] = 'moon,луна';
открываем templates/default/usercp_register.tpl
находим
HTML:
<!-- IF $bb_cfg['allow_change']['language'] -->
<tr>
<td>{L_BOARD_LANG}:</td>
<td>{LANGUAGE_SELECT}</td>
</tr>
<!-- ENDIF -->
после этого добавляем
HTML:
<!-- BEGIN switch_register -->
<tr>
    <td class="row1"><span class="gen">{L_ARE_U_HUMAN} *</span><br /><span class="gensmall">{L_ARE_U_HUMAN_EXPLAIN}</span></td>
    <td class="row2">
    <input type="text" name="{S_HUMANIZER_ATTRIBUTE}" class="post" style="width: 100px" size="10" maxlength="15" value="{HUMANIZER}" />
    </td>
</tr>
<!-- END switch_register -->
открываем includes/ucp/usercp_register.php
находим
PHP:
$pr_data = array();  // данные редактируемого либо регистрационного профиля
$db_data = array();  // данные для базы: регистрационные либо измененные данные юзера
$tp_data = array();  // данные для tpl
ниже добавляем
PHP:
// The anti bots
$humanizer_attribute = md5($bb_cfg['board_startdate'] + $bb_cfg['avatar_filesize'] * $bb_cfg['announce_interval']);
$ruhuman = isset($_POST[$humanizer_attribute]) ? $_POST[$humanizer_attribute] : '';
$ruhuman = trim(htmlspecialchars($ruhuman));
находим
PHP:
if ($need_captcha && !CAPTCHA()->verify_code())
{
$errors[] = $lang['CONFIRM_CODE_WRONG'];
}
ниже добавляем
PHP:
if ($mode == 'register' && !IS_ADMIN)
{
        if (empty($ruhuman))
        {
            $errors[] = $lang['ARE_U_HUMAN_WRONG'];
        }
elseif (strpos(mb_strtolower($lang['HUMANIZER_ANSWERS'],"UTF-8"), mb_strtolower($ruhuman,"UTF-8"))===FALSE)
{
$errors[] = $lang['ARE_U_HUMAN_WRONG'];
}
}
находим
PHP:
    'SIG_DISALLOWED'    => bf($pr_data['user_opt'], 'user_opt', 'allow_sig'),
ниже добавляем
PHP:
// The anti bots
    'HUMANIZER'=> stripslashes(@$ruhuman),
'S_HUMANIZER_ATTRIBUTE' => @$humanizer_attribute,
находим
PHP:
'PR_USER_ID'        => $pr_data['user_id'],
'U_RESET_AUTOLOGIN'  => "login.php?logout=1&amp;reset_autologin=1&amp;sid={$userdata['session_id']}",

));
ниже добавляем
PHP:
// The anti bots
if ( $mode == 'register' )
{
$template->assign_block_vars('switch_register', array());
}
Пример:

Please Login or Register to view hidden text.

 

vater55

Пользователь
#2
не регистрирует, пишет так: Вы не правильно ответили на "контрольный" вопрос.
в кодах не чего не менял
 

diden05

Пользователь
#3
А почему бы не сделать массив вопросов/ответов и рандомно выбирать вопрос?
Ни и эта, @ для быдлокодеров, для остальных есть isset() ;)
 

Nightmare

Разработчик
#4
diden05, Сделать можно, но по сути здесь имя формы боту просто не подобрать. потому и одного вопроса хватает.
 

diden05

Пользователь
#5
Неужели никто не сталкивался с ботами которые поумнее? И hidden поля вполне себе копируют?
 

Fatum

Пользователь
#6
Вот та же проблема, после установки хака сразу же при начале регистрации висит надпись
HTML:
Вы не правильно ответили на "контрольный" вопрос.
Регистрация не проходит... где копать? :confused:
 

Nightmare

Разработчик
#7
Попробуйте заменить
PHP:
 if ($mode == 'register' && !IS_ADMIN)
    {
        if (!in_array(mb_strtolower($ruhuman), $lang['HUMANIZER_ANSWERS']))
        {
            $errors[] = $lang['ARE_U_HUMAN_WRONG'];
        }
    }
на
PHP:
 if ($mode == 'register' && !IS_ADMIN)
    {
        if (!in_array(strtolower($ruhuman), strtolower($lang['HUMANIZER_ANSWERS'])))
        {
            $errors[] = $lang['ARE_U_HUMAN_WRONG'];
        }
    }
 

Fatum

Пользователь
#10
Начнем с того что вводимый ответ - луна как и указано в хаке, но ответ то тут причем?
Надпись "Вы не правильно ответили на "контрольный" вопрос." возникает как только ты заходишь на страницу регистрации, то есть изначально уже не приемлет еще не вводимый ответ.
Но есть один плюс...роботы точно уже не регистрируются :D - осталось сделать чтобы пользователи могли.....