dle.in.ua » Хаки » Автопроверка полей при регистрации.

Автопроверка полей при регистрации.

Автор: pav от 26-07-2009, 02:39
Автопроверка правильности заполнения при регистрации, может, кому-нибудь пригодится.
Итак:
1. В шаблон registration.tpl в самом верху добавляем код:
<script type="text/javascript">
    function check_str ( value )
    {
      var regxp     = new RegExp("[||!@#$%^&*+();><`]");
         if ( value.match(regxp) )
         {
           return true;
         }
         else
         {
         var reg = new RegExp("[0-9a-zA-ZА-Я_^.]", 'i');
         return !reg.test( value );
         }
    }

    function check_login ( obj )
    {
        var value = obj.value;
        if ( value == '' )
        {
              document.getElementById('result-registration').innerHTML = '<div style="color:red">Логин не может быть пустым</div>';
        }
        else if ( value.length < 3 )
        {
             document.getElementById('result-registration').innerHTML = '<div style="color:red">Указан слишком короткий логин</div>';
        }
        else if ( value.length > 15 )
        {
             document.getElementById('result-registration').innerHTML = '<div style="color:red">Указан слишком длинный логин</div>';
        }
        else if ( check_str( value ))
        {
             document.getElementById('result-registration').innerHTML = '<div style="color:red">Логин содержит запрещённые символы</div>';
        }
        else
        {
            CheckLogin();
        }
    }

    function check_first ( obj )
    {
           var value = obj.value;

           if ( value.length < 6 )
           {
                document.getElementById('result-first').innerHTML = '<div style="color:red">Указан слишком короткий пароль</div>';
           }
           else
           {
                document.getElementById('result-first').innerHTML = '<div style="color:green">Все ок</div>';
           }
    }

     function check_password ()
     {
          var pass1 = document.getElementById('password1').value;
          var pass2 = document.getElementById('password2').value;

        if ( pass1 != '' && pass2 != '' )
        {
              if ( pass1 != pass2 )
              {
                   document.getElementById('result-pass').innerHTML = '<div style=\"color:red\">Введённые Вами пароли не совпадают</div><br />';
              }
              else
              {
                 document.getElementById('result-pass').innerHTML = '<div style="color:green">Все ок</div>';
              }
          }
     }

     function check_mail ( obj )
    {
        var value = obj.value;

          var reg = new  RegExp("[0-9a-z_]+@[0-9a-z_^.]+\\.[a-z]", 'i');
        if ( !reg.test ( value ))
        {
            document.getElementById('result-mail').innerHTML = '<div style=\"color:red\">Указан неверный адрес электронной почты</div><br>';
        }
        else
        {
            document.getElementById('result-mail').innerHTML = '<div style="color:green">Все ок</div>';
        }
    }
</script>/code]



2. Изменяем сами поля:
[code]<tr>
<td class="label">Логин:</td>
<td>
<input type="text" name="name" id="name" class="edit_2" size="40" onblur="check_login(this); return false;"><div id="result-registration"></div>
</td>
</tr>
<tr>
<td class="label">Пароль:</td>
<td><input type="password" name="password1" id="password1" class="edit_2" size="40" onblur="check_first( this )"><br><div id="result-first"></div></td>
</tr>
<tr>
<td class="label">Повторите пароль:</td>
<td><input type="password" name="password2" id="password2" class="edit_2" size="40" onblur="check_password()"><br><div id="result-pass"></div>
</td>
</tr>
<tr>
<td class="label">Ваш E-Mail:</td>
<td><input type="text" name="email" class="edit_2" size="60" onblur="check_mail(this)"><br><div id="result-mail"></div>
</td>
</tr>
[sec_code]
<tr>
<td class="label">Введите защитный код<br>с картинки:</td>
<td>
<div>{reg_code}</div>
<div><input name="sec_code" style="width: 115px;" class="f_input" type="text"></div>
</td>
</tr>


Вот примерно так они должны будут выглядеть.

Все просто, но в тоже время очень удобно.
  • Группа: Гости
  • Icq: --
  • Комментариев: 0
  • Публикаций: 0
  • демо не демо... а код йава скрипт багнутый переменая check_password не правильно написанн
    • tutfree
    • Регистрация: --
    • Репутация: (||)
    • 26 июля 2009 04:17
    • 1
    ^
  • Группа: Гости
  • Icq: --
  • Комментариев: 0
  • Публикаций: 0
  • Если логин пустой, или пароль меньше 6 символов, то система сама после кнопки отправить выдаст ошибку при вводе.

    Но за скрипт всё равно спасибо, так для удобства пригодится в бою.
    • Alighieri
    • Регистрация: --
    • Репутация: (||)
    • 26 июля 2009 09:35
    • 2
    ^
  • Группа: Гости
  • Icq: --
  • Комментариев: 0
  • Публикаций: 0
  • Если делать проверку, то лучше бы организовали с помощью jQuery
    • g-prime
    • Регистрация: --
    • Репутация: (||)
    • 26 июля 2009 10:33
    • 3
    ^
  • Группа: User
  • Icq: --
  • Комментариев: 96
  • Публикаций: 0
  • у меня на js организована проверка, чтобы registration.tpl меньше нагружать)
    • VAT
    • Регистрация: 3.07.2008
    • Репутация: (0|0|0)
    • 26 июля 2009 11:55
    • 4
    ^
  • Группа: Гости
  • Icq: --
  • Комментариев: 0
  • Публикаций: 0
  • Alighieri,
    в таком случае проподет все что написал полЬзователЬ

    g-prime,
    ахам... толЬко jQuery не хватало
    • Flake
    • Регистрация: --
    • Репутация: (||)
    • 26 июля 2009 14:19
    • 5
    ^
  • Группа: Гости
  • Icq: --
  • Комментариев: 0
  • Публикаций: 0
  • Flake,
    Собственно, с помощью jquery, можно сделать:
    -Чтобы если одно из полей не заполнено или заполнено не правильно, не давала нажать кнопку Отправить (или у кого как ;) ). За исключением правильности ввода ЗАЩИТНОГО КОДА
    -Если ЗАЩИТНЫЙ КОД введен не правильно -> Все данные из формы удаляются. А с помощью jquery их можно сохранить
    • g-prime
    • Регистрация: --
    • Репутация: (||)
    • 26 июля 2009 15:14
    • 6
    ^
  • Группа: User
  • Icq: --
  • Комментариев: 253
  • Публикаций: 9
  • g-prime, у юзеров могут быть старые браузеры, различные банерорезки, которые могут блокировать jquery, он ведь только начинает набирать обороты. А этот хак - пара десятков строк кода, легко установить, легко удалить.
    • pav
    • Регистрация: 18.01.2009
    • Репутация: (0|0|0)
    • 26 июля 2009 15:56
    • 7
    ^
  • Группа: User
  • Icq: 817135
  • Комментариев: 321
  • Публикаций: 0
  • A при помощи ajax'a такое можно сотворить ? Чтоб и данные не стирались при неверном вводе капчи и все поля автоматически чекались при переходе на следующую форму

    --------------------
    • ALTERNATE
    • Регистрация: 12.12.2008
    • Репутация: (0|0|0)
    • 26 июля 2009 16:01
    • 8
    ^
  • Группа: Гости
  • Icq: --
  • Комментариев: 0
  • Публикаций: 0
  • BlackSmoke,
    Насчет запрещения выполнения JS в браузере, достаточно в шаблоне сделать
    <noscript>Включи JS в браузере, иначе не сможешь зарегистрироваться</noscript>


    >он ведь только начинает набирать обороты
    Полностью не согласен с тобой smile

    >у юзеров могут быть старые браузеры
    IE 6.0+, FF 2+, Safari 3.0+, Opera 9.0+, Chrome
    smile Думаю, более, чем достаточно
    • g-prime
    • Регистрация: --
    • Репутация: (||)
    • 26 июля 2009 19:40
    • 9
    ^
  • Группа: User
  • Icq: --
  • Комментариев: 253
  • Публикаций: 9
  • Ну, я думаю, нет смысла спорить. Я выложил скрипт, денег за него не прошу, гарантий никаких не даю lol Владелец сайта сам решит, что ему лучше поставить.
    • pav
    • Регистрация: 18.01.2009
    • Репутация: (0|0|0)
    • 26 июля 2009 22:28
    • 10
    ^
  • Группа: User
  • Icq: --
  • Комментариев: 102
  • Публикаций: 0
  • Замечательная вещь. Но будет ещё замечательней, если добавить проверку айпишника. Что-то вроде: «Пользователь с таким IP уже есть в системе». Не очень приятно, когда с одного айпи каждый день регистритуется по два - три пользователя. Причём один, типа из Мурманска, другой из Владивостока, третий из Одессы и т.д.

    --------------------
    • Lobs
    • Регистрация: 18.10.2008
    • Репутация: (0|0|0)
    • 28 июля 2009 10:51
    • 11
    ^
  • Группа: Гости
  • Icq: --
  • Комментариев: 0
  • Публикаций: 0
  • Цитата: Lobs
    Но будет ещё замечательней, если добавить проверку айпишника. Что-то вроде: «Пользователь с таким IP уже есть в системе».

    Хорошая идея!!! Я только "за":)) держи +
    Интересно, а этот скрипт поможет от спам-ботов, от автоматических регистраций!? what
    • Vadeinpace
    • Регистрация: --
    • Репутация: (||)
    • 16 октября 2009 16:37
    • 12
    ^
  • Группа: Гости
  • Icq: --
  • Комментариев: 0
  • Публикаций: 0
  • Отличный Скрипт!!! Автору +++
    Цитата: tutfree
    код йава скрипт багнутый переменая check_password не правильно написанн

    Скрипт правильно прописан, не гони...!
    • Vadeinpace
    • Регистрация: --
    • Репутация: (||)
    • 19 октября 2009 16:56
    • 13
    ^
  • Группа: User
  • Icq: --
  • Комментариев: 253
  • Публикаций: 9
  • Совсем необязательно писать цветным жирным шрифтом!!111


    Интересно, а этот скрипт поможет от спам-ботов, от автоматических регистраций!?

    Нет, ботам на js пофиг.
    • pav
    • Регистрация: 18.01.2009
    • Репутация: (0|0|0)
    • 19 октября 2009 17:05
    • 14
    ^
  • Группа: Гости
  • Icq: --
  • Комментариев: 0
  • Публикаций: 0
  • BlackSmoke! А ты ничего не забыл в register.php прописать!?:)

    ===========
    Найти:
    ===========
    if( strlen( $name ) > 20 ) $stop .= $lang['reg_err_3'];
    ===========
    Заменить:
    ===========
    if( strlen( $name ) > 15 ) $stop .= $lang['reg_err_3'];
    if( strlen( $name ) < 3 ) $stop .= $lang['reg_ers_3'];
    ===========
    Найти:
    ===========
    if( preg_match( "/[\||\'|\<|\>|\[|\]|\"
    ===========
    Рядом вставить:
    ===========
    |\0123456789


    -----------------------------------------------
    Открыть файл website.lng

    ===========
    Найти:
    ===========
    'reg_err_3' => "<li>Длина имени не может превышать 20 символов!</li>",
    ===========
    Заменить:
    ===========
    'reg_err_3' => "<li>Длина логина не может превышать 15 символов!</li>",
    'reg_ers_3' => "<li>Длина логина должна быть не меньше 3-х символов!</li>",

    --------------------------------------------------
    В самом скрипте найти:
    --------------------------------------------------
    var regxp = new RegExp("[||!@#$%^&*+();><`]");
    --------------------------------------------------
    И заменить на:
    --------------------------------------------------
    var regxp     = new RegExp("[||!@#$%^&*+();1234567890:><`
    3;");


    -----------------------------
    Стиль текста и цвета - Самовыражение!:)

    Парсер - гад!:) вместо - 3;, поставьте - ]
    • Vadeinpace
    • Регистрация: --
    • Репутация: (||)
    • 19 октября 2009 18:46
    • 15
    ^
    Информация
    Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.