Советы

Форма как средство от лени

Известно, что пользователь очень ленив. Заставить его открыть почтовую программу, взять, да и написать вам письмо — задача практически невыполнимая. Пользователь решится на такой шаг только в самом крайнем случае: если очень сильно захочет вас поругать или, наоборот, ему совершенно необходима информация, которая упоминается на вашем сайте. Если же он сомневается в гениальности вашего предложения, его лень проголосует не в вашу пользу.

Хозяин сайта, напротив, очень хочет обратной связи: узнать мнение о своем творении, получить список замеченных погрешностей, заказ на рекламируемый продукт, собрать коллекцию ссылок единомышленников…

Есть простое средство, притупляющее лень: предложите пользователю заполнить форму и отправить содержание простым щелчком по экранной кнопке, миную утомительную работу в почтовой программе.

Голосуй за Сидорова

Ниже представлен работающий пример. Вы можете его испытать. Поставьте отметку на нужной позиции и нажмите кнопку Голосовать.

Вам нравятся назаметки Сидорова?
отличные хорошие плохие

После того, как нажата экранная кнопка, содержимое формы будет отправлено по электронной почте в адрес Ивана Сидорова.

Возможно перед отправкой на экран будет выведено предупреждение (зависит от настроек браузера): “Производится передача формы по электронной почте. Можно продолжить или отменить передачу.”

Существует ли какая-либо опасность для отправителя такого сообщения? Реальная опасность одна: ваш электронный адрес может быть использован в корыстных целях, например, включен в список рассылки спама и вы будете получать по почте навязчивые сообщения и рекламу. Это еще одна причина (помимо лени), по которой пользователи очень неохотно посылают письма незнакомым корреспондентам.

Можно дать единственно правильную рекомендацию: никогда не пользуйтесь доверчивостью пользователя и не включайте полученный адрес в списки рассылки без ведома корреспондента, даже в самых светлых просветительных целях. Если вы будете поступать иначе, о вас распространится дурная слава, и вы можете получить в свой почтовый ящик “кусочек” своп-файла Виндоус в несколько мегабайт от особо сердитого пользователя.

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

Как это кодируется

Приведенная выше форма имеет следующий код:
<FORM action=mailto:kuk@robotland.pereslavl.ru
      method=post enctype="text/plain">
 <TABLE border=1 cellpadding=10 cellspacing=0
              bgcolor=#DFD9BB>
  <TR>
   <TD colspan=3>Вам нравятся назаметки Сидорова?</TD>
  </TR>
  <TR>
   <TD><INPUT type=radio name=bonus
              value=super>отличные</TD>
   <TD><INPUT type=radio name=bonus checked
              value=good>хорошие</TD>
   <TD><INPUT type=radio name=bonus
              value=bad>плохие</TD>
  </TR>
  <TR>
   <TD colspan=3>
     <INPUT type=submit name=vote value=Голосовать>
   </TD>
  </TR>
 </TABLE>
</FORM>

Форма — это блок <FORM>…</FORM>, внутри которого размещаются средства для организации диалога с пользователем (интерфейсные элементы). В нашем случае заданы три радиокнопки для выбора ответа и кнопка, отправляющая форму в сеть:

<FORM...>
  ...
   <INPUT type=radio ...>
  ...
   <INPUT type=radio ...>
  ...
   <INPUT type=radio ...>
  ...
   <INPUT type=submit ...>
  ...
</FORM>

Внутри формы для декораций, надписей и форматирования могут быть использованы обычные HTML-теги, например, табличные.

Команда FORM имеет следующие атрибуты:

атрибут описание
action Задает адрес для отправки формы по сети. Вы можете послать форму на сервер, где она будет обработана программой (CGI-скриптом), а можете указать в качестве значения атрибута адрес электронной почты и форма будет послана браузером по e-mail. В рассмотренном выше примере записано:
<FORM action=mailto:kuk@robotland.pereslavl.ru>
enctype Задает кодирование передаваемых по сети данных. Все будет хорошо работать, если задать значение атрибута так:
<FORM action=mailto:kuk@robotland.pereslavl.ru
      enctype="text/plain">
method Задает способ передачи формы. Атрибут имеет два значения: get и post. Метод post более универсальный. Не вникая в детали работы этих двух методов, предлагаю “магическую” запись, которая заставит браузер послать форму по указанному адресу:
<FORM action=mailto:kuk@robotland.pereslavl.ru
      enctype="text/plain"
      method=post>

Радиокнопки

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

Ваш выбор:

 Корней Чуковский
 Уолтер Де ла Мэр
 Льюис Кэролл
 Владимир Высоцкий
 Олег Какаулин

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

Радиокнопка задается командой:
<INPUT type=radio>

Дополнительные атрибуты:

Кнопка для отправки формы в сеть

Атрибуты тега FORM определяют куда и как будет послана форма. А сам момент отправки наступает тогда, когда пользователь нажимает кнопку, которая задается так:

<INPUT type=submit>

Дополнительные атрибуты:

Что придет по e-mail

Обычно браузер не сам отсылает форму, а поручает работу почтовой программе, установленной по умолчанию в операционной системе компьютера (например, Outlook).

Если в примере “Голосуй за Сидорова“ отметка стоит на позиции “хорошие”, то по нажатию на кнопку Голосовать в адрес kuk@robotland.pereslavl.ru уйдет письмо с темой “Форма отправлена из Microsoft Internet Explorer” (для браузера IE) следующего содержания:

bonus=good
vote=Голосовать

Таким образом, браузер составляет письмо из пар “имя=значение”, которые выбираются по-порядку из полей формы.

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

Вы можете, создав собственный HTML-файл, провести серию опытов, посылая формы самим себе: просто укажите свой собственный адрес в качестве значения атрибута action тега FORM.

Если вам лень открывать текстовый редактор и писать HTML-коды, можете воспользоваться следующим испытательным стендом. Введите свой электронный адрес, нажмите кнопку Голосовать и форма будет отправлена вам, а не Сидорову.

Вам нравятся назаметки Сидорова?
отличные хорошие плохие
Ваш адрес

Что с этим делать

Пример “Голосуй за Сидорова“ не слишком полезен для практики. Придется завести у себя файл с тремя записями:

назаметки отличные 32
назаметки хорошие 15
назаметки плохие 10

После получения очередного автоматического письма, нужно увеличивать на 1 число в нужной строке. Затем тешить свое самолюбие, или рвать на себе волосы, если полученные результаты не нравятся.

Однако, такой “ручной” способ получения статистических данных идет не в ногу с современными информационными технологиями. Гораздо приятнее, если сбор и обработка данных проходит совсем без нашего участия, а результаты автоматически отображаются на странице, которую смотрит пользователь. Как, например, увеличение счетчика посещения страницы. Но это тот случай, когда форму надо отправлять не по электронному адресу, а на вход программы-обработчика, размещенной на сервере. Программа автоматически изменит значения переменных, накопляющих сумму баллов и представит результаты прямо на гипертекстовой странице.

Написание серверных программ-обработчиков — это большая тема отдельных заметок или, даже, тема отдельного учебника. Но не всегда нужно писать такие программы. Бывают ситуации, когда обычная посылка формы по e-mail оправдана, и о таких случаях будет рассказано в следующей назаметке.


[содержание] [советы] [грамматика и дизайн] [форма и содержание]       Иван Сидоров kurs@robotland.pereslavl.ru