Первоначально была сеть, потом появилась электронная почта, и люди стали переписываться. Им захотелось рассказать о себе, поделиться информацией – появилась всемирная паутина (WWW). Но статические странички – это всего-навсего статические странички… и тогда появилась интерактивность!
>
Сначала определимся с терминологией. Под интерактивными страничками я понимаю такие, в которых реализован интерфейс с какой-либо программой, выполняемой на стороне сервера. Форма на web-страничке принимает от пользователя некие данные, и броузер передает их web-серверу, который и запускает нужную программу. Программа после того, как отработала запрос, возвращает web-серверу результат, а уж он формирует на лету HTML-страничку и отсылает ее обратно броузеру.
Итак, что же мы можем сделать, используя интерактивность? Самое известное, что приходит в голову – это счетчики, гостевые книги, формоотправители, он-лайн магазины, интерфейсы к базам данных. Практически, можно сделать все, что угодно. Все зависит только от умения программиста.
Как это осуществляется технически? А вот как – на стороне сервера мы размещаем нужные программы, базы данных,… и конфигурируем web-сервер таким образом, чтобы он смог передавать запросы пользователей из сети обрабатывающей программе и получать от нее результат. Делается это посредством протокола CGI – Common Gateway Interface (что по-русски звучит как “общий шлюзовый интерфейс”). CGI – это набор правил, по которым сервер передает запрос программе. Любая программа, написанная таким образом, чтобы удовлетворять этим требованиям, сможет использоваться на Web-сервере.
Язык программирования, на котором пишется программа, большого значения не имеет, и может быть использован любой. Наиболее популярным языком программирования, используемым для написания несложных программ, следует признать PERL – язык, первоначально разработанный для написания отчетов и идеально подошедший для несложных CGI-программ. Текст языка на PERL принято называть скриптом (не путать с JavaScript – программа на PERL выполняется на стороне сервера, в то время как JavaScript – на стороне клиента). Язык является интерпретирующим, то есть анализирующим текст программы в процессе выполнения. Для работы PERL на web-сервере должен быть установлен и правильно сконфигурирован соответствующий интерпретатор.
Таким образом, интерактивные странички можно разделить на две части: форма и программа. В форме нам нужно правильно описать все элементы интерфейса и указать путь к выполняемой программе. Как видите, все не так уж сложно. А что делать, если Вы не программист, а Вам нужна несложная программа? В этом случае можно воспользоваться архивом готовых скриптов, большинство из которых бесплатны. Все типичные задачи давно уже решены и отлажены. Это гостевые книги, счетчики, листы рассылок и т.п. Нужно просто найти нужную и внимательно прочитать описание к ней. После этого остается только правильно разместить элементы в форме и указать специфические параметры для данного скрипта. Более сложные программы уже приходится писать программистам, имеющим достаточный опыт для этого.
Отправка формы по почте
Давайте разберем типичный пример – отправку формы по почте. Для этого мы воспользуемся готовой программой из архива Matt Wright, предназначенной для отсылки содержимого формы по почте – FormMail. Этот скрипт нужно сконфигурировать и разместить на web-сервере в специальном каталоге, где располагаются CGI-программы. Обычно он называется cgi-bin (для уверенности проконсультируйтесь с вашим провайдером – предоставляет ли он услуги по размещению CGI-скриптов и как называется каталог для размещения скриптов). А на страничке – описать форму. Таким образом, нам нужно подготовить два файла: создать HTML-форму и сконфигурировать Perl-скрипт под наши нужды.
Создание формы
Начнем, пожалуй, с формы. Описание формы будет заключаться между тегами <form> и </form> и содержать внутри себя элементы формы. Мы сделаем самый минималистский вариант формоотправителя, который будет содержать следующие поля: имя, электронный адрес, текст сообщения. HTML-код нашей странички выглядит следующим образом:
<html>
<head><title>Форма для отправки по почте</title></head>
<body>
<form name=”Request” action=”/cgi-bin/formmail.pl” method=”post”>
<input type=hidden name=”recipient” value=”[email protected]”>
<input type=hidden name=”subject” value=”Запрос информации”>
Ваше Имя: <br>
<input type=text name=”Имя”><br>
E-mail: <br>
<input type=text name=”E-mail”><br>
Сообщение: <br>
<textarea name=”Сообщение”></textarea><br><br>
<input type=submit value=”Отослать”>
<input type=reset value=”Очистить”>
</form>
</body>
</html>
Немного разъяснений по вышеприведенному коду. Обратите внимание на параметр action в теге <form> – он определяет адрес нашего скрипта (.pl – стандартное расширение для программ, написанных на PERL). Первые элементы в форме – это специальные скрытые поля для передачи информации скрипту: поле recipient определяет e-mail, на который мы хотим отослать содержимое формы, а поле subject – строку, которая будет появляться как “тема письма”. Далее идет уже описание непосредственно полей формы. Их может быть сколько угодно, но каждое из них должно иметь имя (параметр name в теге <input>), т.к. результатом работы скрипта будет письмо, в котором каждая строка состоит из пары значений: имени поля и его содержимого. И заканчивается форма двумя кнопками, служащими для отправки сообщения (submit) и очистки формы до начального состояния (reset).
Конфигурирование скрипта
Теперь сконфигурируем скрипт. Опуская несущественные для нас детали, листинг нашего скрипта можно представить так:
#!/usr/bin/perl
$mailprog = ‘/usr/lib/sendmail’;
@referers = (‘www.cherry-design.spb.ru’,’195.5.155.48′);
# Здесь располагается код скрипта.
В данном случае вся конфигурация сведется к установке IP-адреса компьютера, на котором расположен web-сервер, и конфигурированию путей для программ perl и sendmail. Первая программа – непосредственно интерпретатор языка PERL, а вторая – это программа, к которой обращается скрипт, и которая осуществляет посылку сообщения по почте. Адрес расположения PERL-интерпретатора всегда задается первой строкой в скрипте, и в данном случае программа доступна по адресу /usr/bin/perl. Расположение программы sendmail задается второй строчкой в нашем листинге. И, наконец, третья строчка задает имя и IP-адрес web-сервера (для примера я указал параметры моего сайта).
Вот, практически, и все. Наш скрипт осталось только переписать в каталог. Но тут есть одна тонкость – дело в том, что скрипт будет располагаться на UNIX-машине, а текст в UNIX-формате имеет одно отличие от Windows: конец строки в UNIX обозначается символом возврата каретки <CR>, а в Windows – парой символов: перевод строки <LF> и возврат каретки <CR>. Если переписать такой файл по FTP в режиме BINARY, то скрипт работать не будет!!! При копировании скрипта на web-сервер нужно установить режим ASCII, который автоматически преобразует концы строк к UNIX-формату.
У скрипта FormMail есть много дополнительных и очень удобных возможностей. Например – переадресация странички с подтверждением отправки сообщения или проверка правильности заполнения полей. Если Вас это заинтересует, то сходите на страничку Мэтта, и там Вы найдете не только описание FormMail, но и много других полезных скриптов. В этой статье я хотел просто показать, как применять готовые скрипты для нужд своего сайта, и поэтому опустил все несущественные детали и остановился на рассмотрении практических вопросов.
Михаил Мельников
www.cherry-design.spb.ru