Вернуться   Форум ChatPlanet.ru > Сервис «Мой чат» aka «Август» > Шаблоны

Важная информация

Ответ
 
Опции темы Опции просмотра
Старый 21.02.2008, 15:22   #1
 
Регистрация: 02.02.2008
Адрес: Небо
Сообщений: 91
Вы сказали Спасибо: 5
Поблагодарили 160 раз
Репутация: 156
Shogal вне форума
Вопрос Перехват события submit() формы логина?

Кто-нибудь реализовывал это?
Насколько я знаю, в конце страницы логина Август выводит скрипт, который переназначает onsubmit формы...
У кого какие идеи есть?
Смысл в том чтобы перед отправкой формы проверять введенный ник, и если в нем не содержится букв - не отправлять форму. Настройки в конфигурации не советуйте, там можно запретить использование цифр, но тогда нормальные ники с буквами и цифрами станут недействительными...
Report Post
Ответить с цитированием
Старый 21.02.2008, 17:42   #2
 
Сообщений: n/a
По умолчанию

нечего не понял))) видимо не для средних умов)))) ждём более умных людей)))
Report Post
Ответить с цитированием
Старый 23.02.2008, 20:20   #3
 
Регистрация: 27.12.2007
Сообщений: 145
Вы сказали Спасибо: 17
Поблагодарили 206 раз
Репутация: 178
RT вне форума
По умолчанию

А мне интересно, как скрипт будет фильтровать цифры? Ну например просто бессмысленый nick1234, или nick2007 (допустим дата рождения)
__________________
а я же могу и монитором в тебя харкнуть
Report Post
Ответить с цитированием
Старый 23.02.2008, 23:08   #4
 
Регистрация: 01.05.2007
Адрес: Беседка
Сообщений: 958
Вы сказали Спасибо: 744
Поблагодарили 2,233 раз
Репутация: 2280
Отправить сообщение для eXandr с помощью ICQ
eXandr вне форума
По умолчанию

Shogal скорее имел ввиду как запретить просто цыфровые ники вроде 765989, но в то время чтоб буквенно-цыферные ники вроде nick1234 проходили, так как через настройки этого не сделать.
__________________
[Радио] [Клуб] [Цитатник] [top4u]
консультации | любые работы по чатам | регистрация хостинга и доменов
установка форумов | модернизация форумов | фотогалереи сайты | другое
ICQ 669 665

Report Post
Ответить с цитированием
Старый 24.02.2008, 04:53   #5
 
Сообщений: n/a
По умолчанию

очень хорошая идея)
Report Post
Ответить с цитированием
Старый 29.02.2008, 04:23   #6
 
Регистрация: 02.02.2008
Адрес: Небо
Сообщений: 91
Вы сказали Спасибо: 5
Поблагодарили 160 раз
Репутация: 156
Shogal вне форума
По умолчанию

Нашел работающий способ - если повесить функцию на setTimeout -тогда сначала выполнится initLogin, потом через милисекунду наш вариант initLogin'а.

Вот рабочий пример кода - проверяет ники на длину и на кол-во цифр (тестил на IE, Firefox, Опере):
Код HTML:
%ERROR1 = "Слишком длиный ник"%
%ERROR2 = "Недопустимый ник"%
%ERROR3 = "Неправильный пароль\\\\Проверте раскладку клавиатуры."%
%ERROR4 = "Прежде чем войти в этот чат, необходимо зарегистрироваться."%
%ERROR5 = "Этот ник уже находится в чате"%
%ERROR6 = "В чате достигнут предел пользователей"%
%ERROR7 = "Доступ запрещен"%

<table class=send cellspacing=0 cellpadding=0 height=100%><tr>
<td width=50%></td>
<td nowrap>%?Добро пожаловать, %NICK%, заходи!%:%Введите ваше имя:?%</td>
<td class=p>%input("nick", %NICK%, 25, 32)%</td><td>%submit("", "OK")%</td>
<td width=50%></td>
</tr></table>

<script>
function initLogin2(){
  document.login.onsubmit = function () {
    Nick = document.getElementsByName('nick')[0].value;
    //Слишком короткие ники
    if( Nick.length <= 3 ){
      alert('Слишком короткий ник!');
      return false;
    };
    //Ники с более 50% цифрами
    numbers = 0;
    for(i = 0; i < Nick.length; i++){
      c = Nick.charAt(i);
      if( (c >= '0')&&( c <= '9') ) numbers++;
    };
    if( numbers / Nick.length >= 0.5){
      alert('Цифровые ники запрещены!');
      return false;
    };
    //Если мы досюда дошли - все хорошо
    /* августовский код, хз что это он делает...
       или проверяет, не пытался ли юзер нажать кнопку дважды?
       Если честно, не нравится мне он... Можете раскомментировать,
       но тогда не забудьте потестить его =)
    fselect (); parent._s1 = parent._s2; parent._s2 = false; return parent._s1;
    */
    return true;
  };
};
setTimeout('initLogin2()', 1);
</script>
Если у вас на форме есть сразу два поля (логин и пароль) - нужно будет дописать функцию, чтобы она еще пароль хешировала. Passkey брать из %SESS('pass_key')%
Report Post
Ответить с цитированием
Старый 29.02.2008, 04:40   #7
 
Регистрация: 02.02.2008
Адрес: Небо
Сообщений: 91
Вы сказали Спасибо: 5
Поблагодарили 160 раз
Репутация: 156
Shogal вне форума
По умолчанию

Ну вот заодно дописал для случая с паролем, правда практически не тестил - но вроде пашет)
Код HTML:
%ERROR1 = "Слишком длиный ник"%
%ERROR2 = "Недопустимый ник"%
%ERROR3 = "Неправильный пароль\\\\Проверте раскладку клавиатуры."%
%ERROR4 = "Прежде чем войти в этот чат, необходимо зарегистрироваться."%
%ERROR5 = "Этот ник уже находится в чате"%
%ERROR6 = "В чате достигнут предел пользователей"%
%ERROR7 = "Доступ запрещен"%

<table class=send cellspacing=0 cellpadding=0 height=100%><tr>
<td width=50%></td>
<td nowrap>%?Добро пожаловать, %NICK%, заходи!%:%Введите ваше имя:?%</td>
<td class=p nowrap>%input("nick", %NICK%, 25, 32)% пароль %input("pass", "", 25, "", "", "type=password disabled")%</td><td>%submit("", " OK ")%</td>
<td width=50%></td>
</tr></table>

<script>
function initLogin2(){
  document.login.onsubmit = function () {
    Nick = document.getElementsByName('nick')[0].value;
    //Слишком короткие ники
    if( Nick.length <= 3 ){
      alert('Слишком короткий ник!');
      return false;
    };
    //Ники с более 50% цифрами
    numbers = 0;
    for(i = 0; i < Nick.length; i++){
      c = Nick.charAt(i);
      if( (c >= '0')&&( c <= '9') ) numbers++;
    };
    if( numbers / Nick.length >= 0.5){
      alert('Цифровые ники запрещены!');
      return false;
    };
    //Если мы досюда дошли - все хорошо
    //Дохешируем пароль если есть =)
    Pass = document.getElementsByName('pass')[0];
    if (Pass.value) {
      Pass.value = parent.MD5 (parent.MD5 (Pass.value) + "%SESS('pass_key')%");
    }
    /* августовский код, хз что это он делает...
       или проверяет, не пытался ли юзер нажать кнопку дважды?
       Если честно, не нравится мне он... Можете раскомментировать,
       но тогда не забудьте потестить его =)
    fselect (); parent._s1 = parent._s2; parent._s2 = false; return parent._s1;
    */
    return true;
  };
};
setTimeout('initLogin2()', 1);
</script>
Report Post
Ответить с цитированием
Эти 2 пользователя(ей) сказали Спасибо Shogal за это полезное сообщение:
eXandr (04.02.2009), Mistik (14.04.2009)
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Изменение формы блокировки анкет: ограничение списка причин Mickeleangelo Шаблоны 25 01.11.2009 02:48
Формы/Shapes Глаза волка Софт 5 21.08.2009 13:35


Текущее время: 02:10. Часовой пояс GMT +4.


Рейтинг Chat Planet Top
Посетителей всего
Просмотров сегодня
Посетителей сегодня
Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd. Перевод: zCarot
При перепечатке материалов форума обязательна активная ссылка на тему — источник информации.