Web-mastering: портал вебмастеров (web-мастеров) о web-дизайне, web-программировании, раскрутке; статьи по веб-дизайну, веб-программированию для вебмастеров
Начнем с CGI. CGI (Common Gateway Interface) - это не язык
на котором пишут скрипты, это интерфейс
через который эти самые скрипты
запускаются. Такие неотъемлемые аттрибуты
домашних страничек и больших сайтов как
счетчик посещений, почтовая форма,
гостевая книга, WEB - конференция, иногда Чат
- это все CGI - скрипты.
Эти скрипты пишутся в основном на языке
Перл (Perl), он является наиболее удобным, т.к.
не нуждается в компиляции, а для его
исполнения нужны всего лишь интерпретатор
языка Перл и более "сложная" часть -
директория, в которой эти скрипты
разрешено выполнять. На популярных
бесплатных серверах такой директории нет
:(( Из известных мне бесплатных серверов с
поддержкой скриптов самыми лучшими, на мой
взгляд, являются:
http://www.lgg.ru/ - российский сервер.
http://www.hypermart.net/ - не российский сервер ;-)
Но Вы скажете: зачем мне эти мучения с
установкой скриптов, сделаю скрипт на
бесплатном сервере, таком как GuestBook.ru или
подобном. Я отвечу: делайте, если Вас
прикалывает зависимость Вашего сайта от
этих серверов, и их многочисленная реклама.
Вы опять скажете: много функций CGI можно
реализовать на Java/JavaScript, и никакого
каталога для скриптов не надо. Я опять
отвечу: много - это не все! CGI не зависит от
версии броузера, т.к. выполняется на
сервере, а Java зависит, в броузере нельзя
отключить выполнение CGI, Java порой сильно
перегружает страницы.
Я не знаю Перл, скажете Вы. Не беда, отвечу
я. Любой скрипт можно скачать в Интернете.
Ну ладно, cgi-bin директория у меня есть,
скрипт тоже, а как его теперь установить на
сервер? Сначала откройте файл с
расширением pl или cgi в текстовом редакторе,
в первой строке укажите путь к Перлу на
диске, этот путь можно узнать у
администратора, чаще всего это /usr/local/bin/perl/
или просто /usr/bin/perl/, потом
исправьте скрипт так, как написано в README к
нему. Закачайте скрипт на сервер в ASCII,
не закачивайте скрипты в BINARY,
иначе они не будут выполняться! Потом для
скрипта нужно установить права доступа
для выполнения, это можно сделать командой
CHMOD 755, если скрипт записывает
какие-то данные в файл, этому файлу нужно
установить права доступа CHMOD 777.
ВОТ И ВСЕ!!! СКРИПТЫ ДОЛЖНЫ РАБОТАТЬ.
Часть 2. Установка cgi-скрипта.
Я решил коснуться этой темы по той
причине, что очень многие веб-мастера не
могут установить перл скрипт. Я расскажу,
как установить лишь в принципе, а не
подробно, расскажу лишь об основных
аспектах этого дела. Я расскажу только о
том как устанавливать скрипт в системе Unix,
так как только с ним имел дело.
Первое, что мы сделаем - это запустим
команду which perl или whereis perl
(учтите, что некоторые сервера не
поддерживают эти две команды). Если вы
имеете удаленный доступ, то просто
спросите у веб-мастера. Теперь, когда мы
знаем, где находится perl(чаще всего: /usr/bin/perl
или /usr/local/bin/perl), то первую
строку скрипта, мы заменяем на путь к перлу.
Второе, устанавливаем переменные. В
основном есть четыре разные переменные.
Это url в интернете, путь на локальном
компьютере, дата, программа sendmail. Команда
даты находится, в основном, в /bin/date.
Sendmail находится, во многих случаях, в
каталоге. URL, вы надеюсь, сможете поставить,
а вот путь к корневой директории на
локальном компьютере может быть - /home/user/public_html
или home/users/user/public_html. Лучше узнайте
у администратора сервера. Поскольку
описывать это пункт в установке скрипта
очень долго или почти невозможно (так как
случаев может быть очень много), то я не
буду касаться слишком подробно этого
момента. Читайте readme.txt и все поймете.
Третье, мы закачиваем файлы в тот(те)
каталог(и), о котором(ых) написано в readme или
в тот каталог, который является значением
какой-то переменной. Еще один момент -
иногда скрипты для надежности запускаются
только в cgi-bin директории, поэтому
учитывайте это обстоятельство(так как в
других директориях они просто не
запустятся). И еще, не забывайте, если вы
работаете с FTP доступом, что скрипты надо
перекачивать в ASCII mode.
Четвертое - устанавливаем права доступа
или, как это по другому называется,
вызываем команду chmod. Синтаксис: chmod
xxx file, где x - число 1-7, file -
файл или директория, который(ую) мы
подвергаем этой команде. Чаще всего xxx для
скриптов имеет значение 755, для
файлов или директорий, которые доступны
для записи - 777 или 766,
если не разрешается доступ туда
пользователю, 644 и другие. Но
основные цифры для установки, я привел
выше. В общем, это опять же написано в readme.
Часть 3. Наш первый cgi скрипт
Подготовка:
Создаем страницу first.html и пишем в ней:
Где переменная action в теге form
равна будет пути к файлу first.cgi,
который мы сейчас напишем. Также создаем
пустой файл result.txt, в котором
будут храниться данные, заполненные
посетителями. Теперь разберемся с файлов first.cgi.
Открываем NotePad и начинаем писать:
#!/usr/bin/perl
Первая строчка показывает, где находится
перл. В данном случае он находится по
адресу /usr/bin/perl.
Этот код преобразует данные, переданные
методом POST в формат $FORM{'переменная'} =
"значение";. То есть если у вас на
странице в форме написано
, то переменная $FORM{'age'} будет
равна 14.
А это код делает то же самое, что и
предыдущий, но преобразует данные,
переданные методом GET.
Мы также можем сделать некоторые поля
обязательными для заполнения:
if ($FORM{'age'} eq "") {&error('Вы не
заполнили обязательные поля формы');}
Это читается как: Если переменная $FORM{'age'},
то есть поле с параметром name="age",
осталось незаполненным, то(заключается в
фигурные скобки - {}) вызывается
подпрограмма error(ее мы рассмотрим позже) c
параметром, значение которого "Вы не
заполнили обязательные поля формы".
Такой код можно скопировать сколько
угодно раз, меняя age на любую другую
переменную.
Примечание:
Переменные начинаются со знака $ , массивы
со знака @ , подпрограммы с & , хеши с % , а
операторы заканчиваются знаком ; .
Теперь запишем все эти данные из формы в
файл result.txt. Для этого откроем его:
open(RESULT,">>result.txt");
RESULT - это дескриптор файла, его
надо писать прописными буквами. Имя файла,
который надо открыть пишется в кавычках.
Вы, наверное, заметили, что перед именем
файла я написал >> . Это знак обозначает,
что я открываю файл для добавления записи.
Примечание: Знак >> - для добавления
записей. > - стирает все содержимое и
записывает новые записи. Если знака нет -
то файл открывается для чтения.
Не забудьте после данного оператора
поставить ; .
Теперь запишем данные в файл:
foreach $value (values (%FORM)) {
print RESULT "$value|";
}
Читаем: для каждой переменной в массиве
значений хеша FORM напечатать эту
переменную в файл RESULT, а после нее записать
символ | Символ | мы вводим для разделения
значений переменных. После этого
переведем курсор на новую строку, чтобы
следующая запись не была на этой же строке:
Здесь мы сначала пишем, что сейчас пойдет
HTML страница (не забудьте поставить после
Content-type строки \n\n ) . Потом пишем сам HTML код.
Этот код легко модифицировать по аналогии.
Сначала обозначаем, что это подпрограмма(sub)
и называем ее(error).Все операторы
подпрограммы будут идти между двумя
фигурными скобками {}. Первая строка
подпрограммы(my...) обозначает, что
переменная $string будет локальной для
данного блока, то есть подпрограммы в
данном случае и принимает значение
первого параметра в массиве параметров(@_).
Дальше идет почти то же самое, что и при
выводе результатов работы программы,
только теперь мы выводим ошибку на нашу
страницу.
Сохраняем наш cgi скрипт под именем first.cgi.Подсоединяемся
к нашему ftp серверу и закачиваем first.cgi и
result.txt в директорию, где разрешено
запускать cgi скрипты, ascii методом(поскольку
это текст). Теперь установим права доступа
командой chmod 755 и chmod 777(как это сделать
написано выше). Перекачиваем файл first.html в
директорию, где хранятся html файлы. Заходим
через интернет на эту страницу(first.html),
заполняем форму и нажимаем кнопку, и...