Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Интернет » Web-программирование » JavaScript: Проверка значений элементов формы (e-mail, имя..

Модерирует : Cheery

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14

Открыть новую тему     Написать ответ в эту тему

Kaii

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Подскажите, кто знает, как сделать JavaScript'ом проверку формы на заполнение имени и сообщения и валидности мейла?

Общая информация о регулярных выражениях в Javascript:
http://www.johnrobertmorris.com/dev/Regex.asp
http://www.evolt.org/article/Regular_Expressions_in_JavaScript/17/36435/

Инструментарий для проверки регулярных выражений:
http://www.cuneytyilmaz.com/prog/jrx/
 





Переименовал. — Svarga.

Всего записей: 35 | Зарегистр. 15-11-2002 | Отправлено: 20:05 16-11-2002 | Исправлено: Cheery, 00:39 05-10-2006
IntenT



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
arto

Цитата:
ну и попробуйте разобрать вывод mail.ru  

Мне это пока не нужно :о)))

Всего записей: 1584 | Зарегистр. 16-12-2001 | Отправлено: 11:02 09-01-2004
arto

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
т.е. у вас чисто теоретический ответ?

Всего записей: 294 | Зарегистр. 08-02-2003 | Отправлено: 11:17 09-01-2004
IntenT



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
arto
Нет, ответ не чисто теоретический.
У меня есть уверенность, что почтовые сервера соединяются между собой. Они даже иногда отсылают почту. Делают это они посылая ДНС-запрос и обрабатывая ДНС-ответ. Так сервера знают, куда коннектиться, чтобы отослать мыло.
Также я уверен, что послать ДНС-запрос и получить ДНС-ответ можно с помошью ПХП (у меня даже есть классы для этой цели).
ТОесть для каждого адреса можно со 100% точность сазать, сушествует ли для указанного в адресе домена МХ-зона. Если она существует - то для нее указан обслуживающий эту зону SMTP-сервер.  
Подключиться к этому серверу из ПХП, я уверен - тоже можно. Более того, это намного проще чем получить ДНС-ответ.
А получить от этого сервера ответ, существует ли адрес, куда мы хотим отправить мыло - и вовсе нечего делать.
Так что, все дело в желании заняться проблемой.

Всего записей: 1584 | Зарегистр. 16-12-2001 | Отправлено: 11:27 09-01-2004
arto

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
понятно, чистый теоретик.
 
некоторые серверы на RCPT TO отвечают всегда 220, и разбираются потом.
 
 

Всего записей: 294 | Зарегистр. 08-02-2003 | Отправлено: 11:56 09-01-2004
IntenT



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
arto

Цитата:
некоторые серверы на RCPT TO отвечают всегда 220,

Можно узнать какие именно?

Всего записей: 1584 | Зарегистр. 16-12-2001 | Отправлено: 12:27 09-01-2004
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
IntenT

Цитата:
Можно узнать какие именно?

есть такое.. все зависит от настроек.. и релеет ли сервак куда нить потом почту на внутренний домен. Очень часто так настроены дублирующие почтовики.. Собирают почту для какого то почтовика (они не имеют понятия о том, какие юзеры у них есть), а потом пытаются ему перекинуть.

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 21:32 09-01-2004
Svarga

Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
IntenT

Цитата:
Так коннектиться надо к тому серверу, на котором находится этот почтовый ящик. Тут надо ДНС-запрос отправлять и парсить ответ на предмет МХ-записей.  

Немного более verbose mode для ранее приведённого скрипта:

Код:
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<body onLoad="document.forms[0].elements[0].focus()">
<?php
if($email=$_GET['mail'])
{
print "<pre><b>\nПроверяем $email</b>\n\n";
global $HTTP_HOST;
list ( $Username, $Domain ) = split ("@",$email);
if (getmxrr($Domain, $MXHost))
        {
                $ConnectAddress = $MXHost[0];
                print "MXHost = $MXHost[0]\n";
        }
else{$ConnectAddress = $Domain;}
$Connect = fsockopen ( $ConnectAddress, 25 );
print "Соединяемся с $ConnectAddress...\n";
if ($Connect)
{
if (ereg("^220", $Out = fgets($Connect, 1024)))
{
fputs ($Connect, "HELO $HTTP_HOST\r\n");
$Out = fgets ( $Connect, 1024 );
                        print "out = $Out\n";
fputs ($Connect, "MAIL FROM: <{$email}>\r\n");
$From = fgets ( $Connect, 1024 );
                        print "from = $From\n";
fputs ($Connect, "RCPT TO: <{$email}>\r\n");
$To = fgets ($Connect, 1024);
                        print "to = $To\n";
fputs ($Connect, "QUIT\r\n");
fclose($Connect);
if (!ereg ("^250", $From) ||  !ereg ( "^250", $To ))
{print"\nневерный e-mail<br>ответ сервера отрицательный";}
else {print "\n$email скорее всего правилен.";}
}
else{print "\nневерный e-mail<br>нет ответа сервера";}
}
else{print "\nневозможно соедениться с сервером.";}
print "</pre>\n<hr>\n";
}
?><div align=center>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method=get>Введите адрес для проверки:<br>
<input type=text name=mail> <input type=submit value=check>
</div>
 

Кидаем на юниховый сервер и смотрим:
 
prajapati {злая@собака} mail.ru (заведомо существующий адрес):

Цитата:
Проверяем prajapati {злая@собака} mail.ru
MXHost = mxs.mail.ru
Соединяемся с mxs.mail.ru...
out = 250 mx12.mail.ru Hello www.***.net [00.000.00.000]
from = 250 OK
to = 250 Accepted
prajapati {злая@собака} mail.ru скорее всего правилен.

 
заведомо несуществующий адрес в той же почтовой системе:

Цитата:
Проверяем sjfgsjgfsegfse@bk.ru
MXHost = mxs.mail.ru
Соединяемся с mxs.mail.ru...
out = 250 mx3.mail.ru Hello www.***.net [00.000.00.000]
from = 250 OK
to = 250 Accepted
sjfgsjgfsegfse@bk.ru скорее всего правилен.

 
Далее:

Цитата:
Проверяем support@webmoney.ru
MXHost = smtp.webmoney.ru
Соединяемся с smtp.webmoney.ru...
out = 250 webmoney.ru Hello www.***.net, pleased to meet you
from = 250 , Sender ok
to = 530 Authentication required
неверный e-mail
 
ответ сервера отрицательный

 
реальный адрес нашей конторы:

Цитата:
Проверяем support@наша_контора.com
MXHost = наша_контора.com
Соединяемся с наша_контора.com...
out = 220-Our system is not used for unsolicited  
from = 220 and bulk e-mail.
to = 250 address.hoster.com Hello www.***.net [00.000.00.000]
неверный e-mail
 
ответ сервера отрицательный

 
+ не только mail.ru, но и очень многие другие серверы отвечают 250 на любой (даже несуществующий) адрес на них.
Как парсить такие будем?
 
+  

Цитата:
Cheery: все зависит от настроек.. и релеет ли сервак куда нить потом почту на внутренний домен. Очень часто так настроены дублирующие почтовики.. Собирают почту для какого то почтовика (они не имеют понятия о том, какие юзеры у них есть), а потом пытаются ему перекинуть.


----------
away.

Всего записей: 4161 | Зарегистр. 25-06-2002 | Отправлено: 02:36 10-01-2004
Svarga

Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
esergey

Цитата:
Подскажите как сделать, чтобы данные введенные в форму проверялись на количество букв, при нажатии на кнопку и если букв было бы больше 3 данные бы отправлялись на сервер.

Букв больше трёх чтоб было надо или любых символов?
давай точнее...

----------
away.

Всего записей: 4161 | Зарегистр. 25-06-2002 | Отправлено: 02:16 12-06-2004
yarik987

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Люди помогите!!!
 
Есть проверка поля  
 
 if (/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,4})+$/.test(f.email.value)){  
return true  
}  
alert('такое мыло не пойдет.\nисправляем');f.email.select()  
return false  
}  
 
Нужно еще сделать проверку на 3 поля:  
1.только буквы и пробел  
2.(дата), 3 раза по две цифры через "." (дд.мм.гг)  
3. просто шесть цифр.  
Заранее спасибо...

Всего записей: 145 | Зарегистр. 24-01-2004 | Отправлено: 22:50 11-01-2005
arto

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
регулярное выражение на проверку адреса неверное.

Всего записей: 294 | Зарегистр. 08-02-2003 | Отправлено: 23:09 11-01-2005
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
yarik987

Цитата:
Есть проверка поля  

перед тем, как задать вопрос, просмотри всю тему.
http://forum.ru-board.com/topic.cgi?forum=31&topic=1935#8
arto

Цитата:
регулярное выражение на проверку адреса неверное.

не нужно пустых разговоров - знаешь как исправить, напиши.. не знаешь - молчи.

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 23:16 11-01-2005
yarik987

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Cheery
Я посмотрел, но не нашел нужные мне регулярные выр-я, а ними у меня плохо...
Вот и прошу народ помочь...

Всего записей: 145 | Зарегистр. 24-01-2004 | Отправлено: 23:21 11-01-2005
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
yarik987

Цитата:
Я посмотрел, но не нашел нужные мне регулярные выр-я, а ними у меня плохо...

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

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 23:24 11-01-2005
yarik987

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Cheery
Я не говорил что он не работает!!!
Работает, просто мне к этому скрипту необходимо дописать:

Цитата:
Нужно еще сделать проверку на 3 поля:  
1.только буквы и пробел  
2.(дата), 3 раза по две цифры через "." (дд.мм.гг)  
3. просто шесть цифр.  

Если кто сможет помочь буду благодарен...

Всего записей: 145 | Зарегистр. 24-01-2004 | Отправлено: 23:28 11-01-2005
arto

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
не нужно пустых разговоров - знаешь как исправить, напиши.. не знаешь - молчи.

 
тут
http://search.cpan.org/src/MAURICE/Email-Valid-0.15/Valid.pm
 
hostmaster@nic.museum -- правильный
root@test_domain.com -- неправильный
a+b@test.com -- правильный

Всего записей: 294 | Зарегистр. 08-02-2003 | Отправлено: 11:25 12-01-2005
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
arto

Цитата:
тут  

название темы видишь? речь о js


----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 22:15 12-01-2005
arto

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
если в js нет pcre, то перепишите его в js'ные
или просто не применять то, в чем не понимают

Всего записей: 294 | Зарегистр. 08-02-2003 | Отправлено: 23:51 12-01-2005
Pazan



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
вовращаясь к вопросу с первой страницы от TuMoXa:

Цитата:
Вопрос спецам js. Тоже обработка формы...  
есть форма. 20 полей. 1 "селект" и 19 "текстов".  
нужно:  
чтобы при выборе того или иного пункта в селекте, становились доступны или недоступны некоторые "тексты".  
Поясню:  
Форма заведения электронного контракта.  
В "селекте" выбор - юридическое или физическое лицо.  
В остальных - реквизиты и другие данные.  
Так вот для физических лиц многие поля не нужны из тех, что всего есть на форме.  
Все используются только у юридических.  

а можно ли сделать по-другому: чтобы ненужные поля вообще были скрыты (невидимыми). выбрал юридическое лицо -- они и появились?

Всего записей: 924 | Зарегистр. 17-11-2002 | Отправлено: 18:58 13-01-2005
yarik987

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Люди, help. почему не работает коды? По отдельости работают, а все вместе не...
 
 <script>
function checK(f) {
 
if (/^\d{2}\.?\d{2}\.?\d{2}$/.test(f.dater.value)){
return true
}
alert('Дата в формате дд.мм.гг.\nисправляем');f.dater.select()
return false
}
</script>
 
 <script>
function checK(f) {
 
if (/^\D{2,10}\b\D{2,10}$/.test(f.fio.value)){
return true
}
alert('Имя и Фамилия - 2 слова без цифр \от 2 до 10 символов\nисправляем');f.fio.select()
return false
}
</script>
   <script>
function checK(f) {
if (f.email.value=='') {alert("не... мыло надо написать");f.email.focus();return false}
if (/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,4})+$/.test(f.email.value)){
return true
}
alert('такое мыло не пойдет.\nисправляем');f.email.select()
return false
}
</script>  
 <script>
function checK(f) {
 
if (/^\d{6}$/.test(f.chip.value)){
return true
}
alert('Номер  состоит из 6 цифр.\nисправляем');f.chip.select()
return false
}
</script>

Всего записей: 145 | Зарегистр. 24-01-2004 | Отправлено: 20:43 13-01-2005
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
yarik987

Цитата:
Люди, help. почему не работает коды? По отдельости работают, а все вместе не...  

потому что думать нужно.. все функции названы одинаково - ессно работать не будет.

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 20:51 13-01-2005
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14

Компьютерный форум Ru.Board » Интернет » Web-программирование » JavaScript: Проверка значений элементов формы (e-mail, имя..


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru