![]() |
Сегодня мы начнем разговор о CGI скриптах, точнее об их написании. Некоторую базово-вводную информацию о том, что такое CGI зачем оно нужно можно найти в одной из предыдущих заметок. Писать мы будем на Perl-е (просьба не пугаться, если вы не знаете этот язык, я тоже не эксперт, так что разбираться будем вместе :) Для работы вам потребуются самые базовые знания о программировании, а именно понимание того, что такое переменная, массив, файл, функция, подпрограмма, переменная окружения, алгоритм и т.п. Для того, чтобы работать с Перлом под Windows, вам понадобится Perl for Win32, а для того, чтобы тестировать скрипты, не используя сервер, есть такая хорошая штука, как Perl Builder. Конечной целью планируемых мной нескольких заметок будет написание "джентельменского набора" скриптов - отправка заполненной формы со странички по E-mail, счетчик и поисковик. Дальше, если возникнет желание, вы сможете написать еще что-нибудь, используя выученные команды и методы как шаблоны. Для начала, вам надо связаться с провайдером и убедиться, что он разрешает использовать CGI. Если да, то узнайте у него где находится Perl (скорее всего, это будет /usr/local/bin/perl), а также где находится sendmail - программа, занимающаяся отправкой почты (скорее всего, это будет что-то вроде /usr/sbin/sendmail). Если же провайдер не разрешает использование скриптов, то Вам придется либо искать другого провайдера, либо обходиться без скриптов, либо использовать какой-нибудь бесплатный сервис. Итак, мы хотим, чтобы посетитель нашей странички мог отправлять сообщения заполняя форму на сайте. Начать имеет смысл с подготовки странички с формой. Я исхожу из того, что HTML вы знаете (или, как минимум, у вас есть справочник) и нижеследующий текст загадки представлять не будет:
<HTML> Здесь мы создали пустой HTML файл с тремя текстовыми полями для ввода имени пользователя, его почтового адреса и комментария, а также кнопку для отправки собщения. Команда action="formmail.cgi" задает имя скрипта, который мы будем писать. Здесь предполагается, что скрипт расположен в той же директории, что и сам файл. Если по каким-либо соображениям вы его перенесете, то надо будет указать путь к файлу скрипта. Команда method=POST определяет способ передачи информации. Есть два метода: GET и POST. Никакой принципиальной разницы между ними нет, за исключением того, что в случае GET информация будет передаваться открыто в адресе, т.е. у вас получится что-то вроде http://www.vasya.pupkin.ru/formmail.cgi?username=petya&useremail=... , а в случае POST передаваемая информация видна не будет. Со стороны же скрипта, единственная разница заключается в том, откуда брать информацию: из строки запроса или со стандартного ввода.
Теперь начинается самое интересное: написание скрипта. Создайте пустой текстовый файл и напишите в первой строке:
Теперь нам надо определить некоторые переменные, которыми мы будем пользоваться (например, расположение почтовой программы и ваш адрес). Перл язык умный и не требует от вас ни выделения памяти для переменных, ни определения их типа, ни каких-то других премудростей. Переменные в Перле начинаются со знака доллара, а тип их определяется исходя из контекста. Поэтому, следующими сторочками мы пишем:
Теперь, пора переходить к действиям. Нам надо прочитать данные, отправленые формой, сохранить их в каких-то переменных, а затем создать и отправить письмо. Эти действия лучше вынести в отдельные подпрограммы, т.к. они являются достаточно стандартными и вы сможете использовать готовые блоки в разных скриптах. Имена подпрограмм в Perl-e начинаются с амперсанда (&). Поэтому, следующей строчкой мы пишем:
Осталось только указать подпрограмму, которая будет отправлять почту:
Теперь осталось оформить две нужные подпрограммы:
read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
@pairs = split(/&/, $buffer);
foreach $pair (@pairs) {
($name, $value) = split(/=/, $pair);
$value =~ tr/+/ /;
$FORM{$name} = $value;
Теперь вторая подпрограмма, отправляющая форму: Вот и все! У вас есть готовый скрипт, который вы написали самостоятельно! Осталось только положить его на сервер (вместе с HTML файлом) и опробовать. Не забудьте только, что скрипт надо выкладывать на сервер с помощью FTP клиента, переключенного в ASCII режим. А после выгрузки, указать, что это исполняемый файл (в большинстве современных FTP клиентов есть специальная функция для этого, которая называется, скорее всего chmod). Если вы не сумеете это сделать, тоо свяжитесь с провайдером и попросите его указать соответствующие права для вашего скрипта.
Разумеется, этот скрипт несколько "недоделанный". Например, он не выводит пользователю подтверждения, что его комментарий действительно отправлен. Но этим мы займемся как-нибудь в следующий раз! ;-)
|
Copyright © 2000 ProtoPlex&FRAGman Design Group |