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

Тема в разделе "Модификации для TorrentPier (архив)", создана пользователем druid, 27 авг 2011.

  1. druid

    druid Пользователь

    Сообщения:
    206
    Симпатии:
    119
    Открываем 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());
    }
    Пример:
    [​IMG]
     
    Gemini_13, Seruy, nord51 и ещё 1-му нравится это.
  2. vater55

    vater55 Пользователь

    Сообщения:
    14
    Симпатии:
    0
    не регистрирует, пишет так: Вы не правильно ответили на "контрольный" вопрос.
    в кодах не чего не менял
     
  3. diden05

    diden05 Пользователь

    Сообщения:
    262
    Симпатии:
    76
    А почему бы не сделать массив вопросов/ответов и рандомно выбирать вопрос?
    Ни и эта, @ для быдлокодеров, для остальных есть isset() ;)
     
  4. Nightmare

    Nightmare Разработчик

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

    diden05 Пользователь

    Сообщения:
    262
    Симпатии:
    76
    Неужели никто не сталкивался с ботами которые поумнее? И hidden поля вполне себе копируют?
     
  6. Fatum

    Fatum Пользователь

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

    Nightmare Разработчик

    Сообщения:
    609
    Симпатии:
    205
    Попробуйте заменить
    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'];
            }
        }
     
  8. Fatum

    Fatum Пользователь

    Сообщения:
    103
    Симпатии:
    6
    НЕТ, не помогает. Та же самая проблема.
     
  9. druid

    druid Пользователь

    Сообщения:
    206
    Симпатии:
    119
    какой ответ то хоть вводите?
     
  10. Fatum

    Fatum Пользователь

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

     

Поделиться этой страницей