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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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
alexei111



Gold Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Подскажите, что я делаю не так? Java-скрипт не отрабатывает почему-то!
<html>
<head>
<script language="JavaScript">
<!--
function Filled() {  
if document.Form1.name.value=""  
{  
alert ("ВВедите имя");  
return false;  
}  
else
 return True
}  
//-->
</script>
<title>Untitled</title>
</head>
 
<body>
<form action="obraztestsecond.asp" name="Form1" onsubmit="return Filled()">  
<input type=text name="name">  
<input type=text name="email">  
<input type=submit value="OK"  
</form>  
 
</body>
</html>

----------
Чемпион РБП 2007, 2009, КХЛ 08/09, 09/10, NHL 08/09, призер многих других турниров.

Всего записей: 5013 | Зарегистр. 22-07-2002 | Отправлено: 02:57 22-12-2003
Cheery



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

Цитата:
Подскажите, что я делаю не так? Java-скрипт не отрабатывает почему-то!  

if (document.Form1.name.value=="")


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

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



Gold Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Cheery
Спасибо! Все работает! Вот что значит профессионал!

----------
Чемпион РБП 2007, 2009, КХЛ 08/09, 09/10, NHL 08/09, призер многих других турниров.

Всего записей: 5013 | Зарегистр. 22-07-2002 | Отправлено: 03:42 22-12-2003 | Исправлено: alexei111, 03:45 22-12-2003
IntenT



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Вообще, кто сказал что проверять валидность данных надо ЖабаСкиптом??
Мягко говоря не самая умная идея

Всего записей: 1584 | Зарегистр. 16-12-2001 | Отправлено: 12:15 22-12-2003
arto

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

Всего записей: 294 | Зарегистр. 08-02-2003 | Отправлено: 14:16 23-12-2003
Svarga

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

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

??
типа root@localhost?
 
IntenT

Цитата:
Вообще, кто сказал что проверять валидность данных надо ЖабаСкиптом??  
Мягко говоря не самая умная идея

а кто сказал, что только им? просто при проверке JavaScript'ом перед отправкой посетителю не обязательно ждать пока загрузится ненужная ему страница с сообщением о неправильном адресе — просто alert и фокус на нужном поле...
А на сервере само собой в любом случае проверять данные надо...

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

Всего записей: 4161 | Зарегистр. 25-06-2002 | Отправлено: 18:36 24-12-2003
IntenT



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

Всего записей: 1584 | Зарегистр. 16-12-2001 | Отправлено: 19:35 24-12-2003
Svarga

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

Цитата:
Svarga  
Двойная работа

юзабилити.

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

Всего записей: 4161 | Зарегистр. 25-06-2002 | Отправлено: 21:09 24-12-2003
arto

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

Цитата:
типа root@localhost

 
типа test+test@localhost

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

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

Цитата:
типа test+test@localhost


если проверку адреса по шаблону делать, кто мешает нормальный шаблон составить?

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

Всего записей: 4161 | Зарегистр. 25-06-2002 | Отправлено: 18:00 25-12-2003
arto

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
составте. a я посмотрю.
hint: perldoc -m Email::Valid

Всего записей: 294 | Зарегистр. 08-02-2003 | Отправлено: 22:34 25-12-2003
Svarga

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

Цитата:
hint: perldoc -m Email::Valid

ага:

Цитата:
 JavaScript: Проверка значений элементов формы (e-mail, имя..  

) в любом случае проверка условна,
да и толку от использования модуля, если он всё равно будет пропускать мусор типа president@whitehouse.gov, support@microsoft.com или jkgbhsdfgsdfb@yahoo.com
 

Цитата:
составте. a я посмотрю

интересный тон.
 
что-то вроде этого:

Код:
double click для проверки адреса:<br><input type=text onDblClick="if(/^[a-zA-Z0-9](([a-z0-9\-_\+\&]?)+[a-z0-9])?\@((\w([a-zA-Z0-9\-_]+\w)?\.[a-z]{2,4})|(([01]?\d\d|2[0-4]\d|25[0-5])\.([01]?\d\d|2[0-4]\d|25[0-5])\.([01]?\d\d|2[0-4]\d|25[0-5])\.([01]?\d\d|2[0-4]\d|25[0-5]))|(localhost))$/i.test(this.value))alert(true);else alert(false)">

конечно можно ещё домены верхнего уровня явно добавить, только к чему дальше извращаться?
 
PS. для 99.99% адресов вполне хватает /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,4})+$/, остальные изощрения — для патологических случаев
Тем более, что 100%-я проверка существования адреса скриптом невозможна.

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

Всего записей: 4161 | Зарегистр. 25-06-2002 | Отправлено: 14:02 26-12-2003
IntenT



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

Цитата:
Тем более, что 100%-я проверка существования адреса скриптом невозможна.

Валидность по форме проверить можно на 100%.
А вот на существование - еще проще.
Достаточно просто приконнектиться к смтп и попробовать передать что-то типа
hello somehost
sender qqq@www.nnn
rcpt_to address@to.test
 
и парсить ответ на предмет ошибок.

Всего записей: 1584 | Зарегистр. 16-12-2001 | Отправлено: 14:59 26-12-2003
arto

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
в Email::Valid приведен регексп для проверки e-mail.
по стандарту '_' в имени домена не может присутствовать.
 
IntenT:
 
попробуйте такое для mail.ru

Всего записей: 294 | Зарегистр. 08-02-2003 | Отправлено: 15:08 27-12-2003
IntenT



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
arto
Все заработает, я уверен на 100%. Авторизация смтп на мєйл.ру отсутсвует. Нет релея, но єто уже задача тестирующего скрипта подключиться к смтп обслуживающий MX зону домена.

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

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

Всего записей: 294 | Зарегистр. 08-02-2003 | Отправлено: 01:34 28-12-2003
Svarga

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

Цитата:
по стандарту '_' в имени домена не может присутствовать.

действительно ошибся, сорри
IntenT

Цитата:
Валидность по форме проверить можно на 100%.  

скажем, postmaster также часто вполне валидный адрес, хотя даже без собаки... т.е. всё-таки подавляющее большинство адресов по форме проверить можно, но, всё-таки, не все.
 

Цитата:
А вот на существование - еще проще.  
Достаточно просто приконнектиться к смтп и попробовать передать что-то типа  
hello somehost  
sender qqq@www.nnn  
rcpt_to address@to.test  
 
и парсить ответ на предмет ошибок.


Код:
<?php
$email=$_GET['mail'];
global $HTTP_HOST;
list ( $Username, $Domain ) = split ("@",$email);
if (getmxrr($Domain, $MXHost)) {$ConnectAddress = $MXHost[0];}
else{$ConnectAddress = $Domain;}
$Connect = fsockopen ( $ConnectAddress, 25 );
if ($Connect)
{
    if (ereg("^220", $Out = fgets($Connect, 1024)))
                {
                        fputs ($Connect, "HELO $HTTP_HOST\r\n");
                        $Out = fgets ( $Connect, 1024 );
                        fputs ($Connect, "MAIL FROM: <{$email}>\r\n");
                        $From = fgets ( $Connect, 1024 );
                        fputs ($Connect, "RCPT TO: <{$email}>\r\n");
                        $To = fgets ($Connect, 1024);
                        fputs ($Connect, "QUIT\r\n");
                        fclose($Connect);
                        if (!ereg ("^250", $From) ||  !ereg ( "^250", $To ))
                                {print"false. Server rejected address";}
                        else {print "true<br>$email appears to be valid.";}
                }
        else{print "false<br>No response from server";}
}
else{print "false<br>Can not connect E-Mail server.";}
?>

Обращаемся к скрипту в виде script.php?mail=hjfghxzxzjfgkdhsf@mail.ru и скрипт говорит, что есть такой адрес, смотрим какой-нибудь wxcfiuweigshg@canada.com — тоже есть... хотя во многих случаях правильно говорит , короче, тоже до 100% далеко.

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

Всего записей: 4161 | Зарегистр. 25-06-2002 | Отправлено: 15:53 07-01-2004 | Исправлено: Svarga, 16:00 07-01-2004
IntenT



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

Цитата:
Обращаемся к скрипту в виде script.php?mail=hjfghxzxzjfgkdhsf@mail.ru и скрипт говорит, что есть такой адрес

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

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

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
IntenT
 
ну и попробуйте разобрать вывод mail.ru
 
btw, а каким образом связан mx и mbox?

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



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

Цитата:
btw, а каким образом связан mx и mbox?

никаким.. mx-record запись в dns о том, кто является почтовым сервером для данного домена.
я часто юзаю этот валидатор.. он, правда, не коннектится, но проверяет наличие домена..
http://www.thewebmasters.net/php/Validator.phtml

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

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 08:43 09-01-2004 | Исправлено: Cheery, 08:46 09-01-2004
Открыть новую тему     Написать ответ в эту тему

Страницы: 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