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

druid

Пользователь
Открываем 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

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

diden05

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

Nightmare

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

diden05

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

Fatum

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

Nightmare

Пользователь
Попробуйте заменить
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

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

 
Сверху