HTML / 9. Формы

Получение данных из форм при помощи электронной почты

Появляется все больше авторов, у которых нет другого доступа к серверу, кроме возможности выложить на нем свои документы. Как следствие, они не могут создавать и администрировать свои CGI-программы.Фактически некоторые интернет-провайдеры (Internet Service Providers, ISP), особенно те, что предоставляют место для размещения сотен или даже тысяч сайтов, как правило, отказывают в CGI-обслуживании, чтобы не перегружать сервер или из соображений безопасности.

Если вы работаете с одним из множества сайтов, на которых не удается обеспечить обработку формы, даже если это необходимо для спасения вашей жизни, не отчаивайтесь, не все еще потеряно. Можно указать в качестве значения атрибута action вашей формы mailto-URL. Современные броузеры автоматически отправят параметры и значения формы по указанному адресу электронной почты. Получатель почты может затем обработать ее и предпринять соответствующие действия.

Если вы замените тег <form> из предыдущего примера следующим текстом:

<form method=POST action="mailto:chuckandbill@oreilly.com"
enctype="text/plain"
onSubmit="window.alert('This form is being sent by email, even
though it may not appear that anything has happened...')">

данные формы – когда пользователь нажмет кнопку «Submit» – будут отправлены Чаку и Билли, не подвергаясь никакой обработке на сервере. Отметьте еще, что в форму вставлено простое JavaScript-предупреждение, появляющееся, когда броузер готов отправить данные.

Это сообщение говорит пользователю, чтобы он не ждал подтверждения отправки данных (рис. 9.2). Кроме того, если эта функция не была отключена или вы опустили спецификацию атрибута method=POST, броузер обычно предупредит читателя, что он вот-вот отправит незашифрованную («text/plain») и, следовательно, незащищенную информацию по сети, и даст ему возможность отменить отправку. В противном случае форма посылается по электронной почте без предуведомления.Тело передаваемого по электронной почте сообщения, содержащего результаты заполнения формы, будет выглядеть примерно так:

name=Bill Kennedy
sex=M
income=Under $25,000

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

• Ваши формы не будут работать на броузерах, которые не поддерживают mailto-URL в качестве значения атрибута action. Все популярные в настоящее время броузеры поддерживают формы mailto.

• Некоторые броузеры, среди которых ранние (до пятой) версии Internet Explorer, не помещают надлежащим образом данные формы в тело сообщения электронной почты и могут даже открыть диалоговое окно почты, дезориентируя пользователя.

• При отправке данных по mailto пользователи не получают страницы, подтверждающей, что их форма обработана. После ее отправки пользователь по-прежнему созерцает форму, как если бы ничего не произошло. (Подражая приведенному выше примеру, применяйте
JavaScript с атрибутами onSubmit и onClick, чтобы разрешать понятное недоумение.)

• Ваши данные могут быть получены в таком виде, что их будет трудно или невозможно прочитать, если не был указан пригодный для чтения тип кодировки enctype=text/plain.
• Вы теряете любые способы защиты информации формы, которые мог бы предоставить сервер.

Последняя проблема заслуживает дополнительных объяснений. Некоторые веб-провайдеры поддерживают особые «защищенные» серверы, которые при посылке страницы на броузер пользователя присоединяют к ней шифровальный ключ. Популярные броузеры применяют этот ключ, зашифровывая все данные, которые документ, возможно, отправляет такому серверу, включая результаты заполнения формы пользователем. Поскольку только броузер клиента и сервер знают ключ шифра, лишь этот сервер может расшифровать информацию, поступающую ему в ответ от броузера клиента, что эффективно защищает ее от подслушивания и от хакеров.

Однако, если вы для получения данных из формы используете электронную почту, сервер сначала расшифрует их и только потом поместит содержащуюся в форме информацию в тело сообщения и отправит его вам. Электронная почта просто создана для перехвата и расшифровки. Ее содержимое совершенно не защищено.Так что если вы применяете электронную почту для получения из формы секретных данных, скажем личной информации или сведений о кредитных картах, помните о возможных последствиях. И не дурачьте себя и своих пользователей даже мыслью о «защищенном» сервере, когда из-под него торчит беззащитный хвост электронной почты.

Несмотря на все эти проблемы, передача данных форм по электронной почте представляет привлекательную альтернативу для веб-авторов, доступ которых к серверу ограничен. Наш совет: применяйте CGI-программы, когда только это возможно, а если ничего другого не остается, отступайте на позиции mailto-URL.

Статьи по HTML на эту тему:

Атрибуты формы общего назначения
Группировка элементов формы и обеспечение их надписями
Многострочные области ввода текста
Программирование форм
Тег <button>

Вернуться в раздел: HTML / 9. Формы