Суббота, 16.11.2024, 19:25
Приветствую Вас, Гость
Главная » 2011 » Январь » 9 » Скажем спамерам нет!
14:15
Скажем спамерам нет!

Всех уже достали эти спамеры, регистрируются и оставляют комменты с рекламой или бессмысленными фразами.
Конечно же, меня эта глобальная проблема тоже не обошла стороной.
И пришлось придумать решение, которое позволит запретить ботам регистрироваться на сайте.

Цель: запретить ботам регистрироваться на сайте
Решение: ввести дополнительную, простенькую проверку
Тестировалось на: DLE 7.5

И так, далее инструкция и сам код:

1) Открываем файл engine/modules/ register.php и ищем в нём (37 строку):

if( $sec_code != $sec_code_session or ! $sec_code_session ) $stop .= $lang['reg_err_19'];

Сразу после этого вставляем:

if(empty($_POST['mark'])){
          $stop .= "Выберите кружок!";
    } else {
        if($_POST['mark'] != $_SESSION['codes']){
            $stop .= "Выбран Неверный кружок! Ботам тут не место!!! :)";
        }
    }

2) Далее ищем (с 169 по 176 строки):

if( $doaction != "validating" and ! $stopregistration ) {
    
    if( $_POST['dle_rules_accept'] == "yes" ) {
        
        @session_register( 'dle_rules_accept' );
        $_SESSION['dle_rules_accept'] = "1";
    
    }

после вставляем:

// Генерируем рандомно число от 1 до 7
    $mark = mt_rand(1,7);
    $marks = array ("Первый" => "1", "Второй" => "2", "Третий" => "3", "Четвёртый" => "4", "Пятый" => "5", "Шестой" => "6", "Седьмой" => "7");
    $marks_check = array_search($mark, $marks);
    
            // Помещаем цифру в сессию
    $_SESSION['codes'] = $mark;

3) Ищем (199 - 202):

if( $config['allow_sec_code'] == "yes" ) {
        $tpl->set( '[sec_code]', "" );
        $tpl->set( '[/sec_code]', "" );
        $tpl->set( '{reg_code}', "{$lang['reload_code']}" );

Прямо перед

} else {,

вставляем:

$tpl->set( '{mark}', "$marks_check" );

Ищем (203 - 206):

} else {
            $tpl->set( '{reg_code}', "" );
            $tpl->set_block( "'[sec_code](.*?)[/sec_code]'si", "" );
        }

после:

$tpl->set( '{reg_code}', "" ); ,

вставляем:

$tpl->set( '{mark}', "" );

4) Последний шаг, открываем файл templates/Ваш шаблон/registration.tpl и между тегами [/sec_code] и [/registration], вставляете:

Дополнительная защита от спамеров
                            
                            
                              
                              Если вы Человек, то выберите {mark} кружок!
                            
                            
                              Выберите кружок:
                              1
                2 3
                4 5
                6 7

Автор: infocean

Категория: Самый старый софт для тебя | Просмотров: 367 | Добавил: smoke | Рейтинг: 0.0/0
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]