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

Автопроверка правильности заполнения при регистрации, может, кому-нибудь пригодится.
Итак:
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>


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

Все просто, но в тоже время очень удобно.
Другие новости по теме:

Категория: Хаки ----- Просмотров: 3083 ----- Комментариев: 15

Вернуться

  • Группа: Гости
  • ICQ: --
  • Регистрация: --
  • Комментариев: 0
  • Публикаций: 0
^
демо не демо... а код йава скрипт багнутый переменая check_password не правильно написанн
  • Группа: Гости
  • ICQ: --
  • Регистрация: --
  • Комментариев: 0
  • Публикаций: 0
^
Если логин пустой, или пароль меньше 6 символов, то система сама после кнопки отправить выдаст ошибку при вводе.

Но за скрипт всё равно спасибо, так для удобства пригодится в бою.
  • Группа: Гости
  • ICQ: --
  • Регистрация: --
  • Комментариев: 0
  • Публикаций: 0
^
Если делать проверку, то лучше бы организовали с помощью jQuery
  • VAT

  • 26 июля 2009 11:55
  • Группа: User
  • ICQ: --
  • Регистрация: 3.07.2008
  • Комментариев: 96
  • Публикаций: 0
^
у меня на js организована проверка, чтобы registration.tpl меньше нагружать)
  • Flake

  • 26 июля 2009 14:19
  • Группа: Гости
  • ICQ: --
  • Регистрация: --
  • Комментариев: 0
  • Публикаций: 0
^
Alighieri,
в таком случае проподет все что написал полЬзователЬ

g-prime,
ахам... толЬко jQuery не хватало
  • Группа: Гости
  • ICQ: --
  • Регистрация: --
  • Комментариев: 0
  • Публикаций: 0
^
Flake,
Собственно, с помощью jquery, можно сделать:
-Чтобы если одно из полей не заполнено или заполнено не правильно, не давала нажать кнопку Отправить (или у кого как ;) ). За исключением правильности ввода ЗАЩИТНОГО КОДА
-Если ЗАЩИТНЫЙ КОД введен не правильно -> Все данные из формы удаляются. А с помощью jquery их можно сохранить
  • pav

  • 26 июля 2009 15:56
  • Группа: User
  • ICQ: --
  • Регистрация: 19.01.2009
  • Комментариев: 253
  • Публикаций: 9
^
g-prime, у юзеров могут быть старые браузеры, различные банерорезки, которые могут блокировать jquery, он ведь только начинает набирать обороты. А этот хак - пара десятков строк кода, легко установить, легко удалить.
  • Группа: User
  • ICQ: 817135
  • Регистрация: 12.12.2008
  • Комментариев: 321
  • Публикаций: 0
^
A при помощи ajax'a такое можно сотворить ? Чтоб и данные не стирались при неверном вводе капчи и все поля автоматически чекались при переходе на следующую форму

--------------------
  • Группа: Гости
  • ICQ: --
  • Регистрация: --
  • Комментариев: 0
  • Публикаций: 0
^
BlackSmoke,
Насчет запрещения выполнения JS в браузере, достаточно в шаблоне сделать
<noscript>Включи JS в браузере, иначе не сможешь зарегистрироваться</noscript>


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

>у юзеров могут быть старые браузеры
IE 6.0+, FF 2+, Safari 3.0+, Opera 9.0+, Chrome
smile Думаю, более, чем достаточно
  • pav

  • 26 июля 2009 22:28
  • Группа: User
  • ICQ: --
  • Регистрация: 19.01.2009
  • Комментариев: 253
  • Публикаций: 9
^
Ну, я думаю, нет смысла спорить. Я выложил скрипт, денег за него не прошу, гарантий никаких не даю lol Владелец сайта сам решит, что ему лучше поставить.
  • Lobs

  • 28 июля 2009 10:51
  • Группа: User
  • ICQ: --
  • Регистрация: 18.10.2008
  • Комментариев: 102
  • Публикаций: 0
^
Замечательная вещь. Но будет ещё замечательней, если добавить проверку айпишника. Что-то вроде: «Пользователь с таким IP уже есть в системе». Не очень приятно, когда с одного айпи каждый день регистритуется по два - три пользователя. Причём один, типа из Мурманска, другой из Владивостока, третий из Одессы и т.д.

--------------------
  • Группа: Гости
  • ICQ: --
  • Регистрация: --
  • Комментариев: 0
  • Публикаций: 0
^
Цитата: Lobs
Но будет ещё замечательней, если добавить проверку айпишника. Что-то вроде: «Пользователь с таким IP уже есть в системе».

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

Скрипт правильно прописан, не гони...!
  • pav

  • 19 октября 2009 17:05
  • Группа: User
  • ICQ: --
  • Регистрация: 19.01.2009
  • Комментариев: 253
  • Публикаций: 9
^
Совсем необязательно писать цветным жирным шрифтом!!111


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

Нет, ботам на js пофиг.
  • Группа: Гости
  • 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;, поставьте - ]