Посетители сайта — это наше всё. Их надо холить, лелеять, заботиться о них. А еще им нельзя доверять… Чтобы сайт не взломали, всегда и везде необходимо проверять введенные пользователем данные. Делать это лучше на сервере соответствующими средствами.
Проверка клиентским JavaScript легко обходится отключением js в браузере и предназначена она не для борьбы со злоумышленниками, а для помощи тем, кто случайно допустил ошибку. Тоже очень благородное занятие :)
Приближаться к высокому идеалу удобного веб-сайта мы будем на примере формы отзыва на e-mail. <form name="mailer" id="mailer" action="/mail.php" method="post" onsubmit="return checkmailform();"> E-mail отправителя:<br /> <input type="text" name="mailsender" id="mailsender" /><br /> Текст письма:<br /> <textarea name="mailtext" id="mailtext" cols="35" rows="5"></textarea><br /> <input type="submit" value="Отправить" /> </form>
Форма состоит из полей ввода e-mail отправителя и текста сообщения и кнопки отправки данных серверному скрипту mail.php. Для формы и полей данных в атрибутах id и name (они идентичны, name используется для обратной совместимости) указаны уникальные имена, которыми мы будем оперировать в программе на JavaScript.
С помощью события документа (action) onsubmit, возникающего при отправке формы, мы вызываем JavaScript функцию, которая и отвечает за проверку введенных пользователем данных. function checkmailform() { if ( (document.forms.mailer.mailsender.value == null) (document.forms.mailer.mailsender.value.length < 7) ) { alert("Заполните поле: E-mail отправителя"); document.forms.mailer.mailsender.focus(); return false; } if (! (/^\w+[-_\.]*\w+@\w+-?\w+\.[a-z]{2,4}$/.test(document.forms.mailer.mailsender.value)) ) { alert("Введите правильный e-mail адрес"); document.forms.mailer.mailsender.focus(); return false; } if ( (document.forms.mailer.mailtext.value == null) (document.forms.mailer.mailtext.value.length < 10) ) { alert("Заполните поле: Текст письма"); document.forms.mailer.mailtext.focus(); return false; } return true; }
К данным XHTML-формы мы обращаемся в следующем формате: документ.все_формы.имя_формы(у нас это name="mailer").имя_поля. Добавление «.value» дает нам текст внутри указанного по имени элемента формы, а «.value.length» — длину этого текста в символах.
Функция делает 3 проверки:
- Введен ли вообще текст в поле «E-mail отправителя» и не меньше ли он 7 символов.
- Регулярным выражением проверяет, является ли адрес отправителя правильным e-mail адресом: имя@домен.зонадомена.
-
Введен ли текст сообщения и не меньше ли он 10 символов.
Если хотя бы одна из проверок не пройдена, работа скрипта останавливается, отправка данных формы на сервер отменяется, пользователь получает сообщение с ошибкой, а курсор клавиатуры помещается в поле формы, вызвавшее ошибку. Если проблем не обнаружено, JavaScript не мешает отправке данных на сервер.
|