На главную

Библиотека Интернет Индустрии I2R.ru

Rambler's Top100

Малобюджетные сайты...

Продвижение веб-сайта...

Контент и авторское право...

Забобрить эту страницу! Забобрить! Блог Библиотека Сайтостроительства на toodoo
  Поиск:   
Рассылки для занятых...»
I2R » Сайтостроительство » Web-программирование

Основы web-дизайна. Perl и CGI. Часть I

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

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

Вопреки распространённому среди новичков заблуждению, CGI (Common Gateway Interface) -- это не язык, а лишь тип интерфейса, протокол обмена данными между сервером и программой. CGI-программа может быть написана практически на любом языке, компилятор (интерпретатор) которого может работать в той ОС, под которой запущен веб-сервер. Чаше всего CGI-приложения пишутся на языке Perl, именно о нём мы сегодня и поговорим.

Для того, чтобы поэкспериментировать с cgi-скриптами, предварительно нужно инсталлировать Perl и правильно настроить сервер. За дистрибутивом ActivePerl для Windows нужно идти на сайт компании Activestate. Нужный вам продукт распространяется бесплатно. Думаю, что с его поиском и инсталляцией проблем возникнуть не должно. Замечу лишь, что лучше всего инсталлировать ActivePerl в папку C:\Perl, а не туда, куда предлагает программа-инсталлятор.

Для работы с Perl вам потребуется специализированный редактор. Можно обойтись и Notepad'ом, но в нём нет подсветки синтаксиса, невозможно организовать вывод диагностики в сам редактор и т. д. и т. п. Подходящих редакторов десятки, сам я пользуюсь Perlbuilder'ом, пробную версию которого можно скачать с сервера Solutionsoft.

Настройка Apache

Теперь откроем файл httpd.conf.

1. В первую очередь нужно сказать серверу, в какой папке можно запускать скрипты: по умолчанию это делать запрещено. Найдите в файле httpd.conf директиву ScriptAlias. Её нужно переписать примерно так:

ScriptAlias /cgi-bin/ "D:/MyWeb/artefact.list.ru/cgi/" <Directory "D:/MyWeb/artefact.list.ru/cgi">
   AllowOverride None
   Options ExecCGI
   Order allow,deny
   Allow from all
</Directory>

Понятно, что нужно прописать те пути, которые соответствуют вашему компьютеру. Обратите внимание, что для директории D:/MyWeb/artefact.list.ru/cgi, в которой будут храниться наши скрипты, указана опция ExecCGI, которая разрешает Apache запускать в этой директории исполняемые программы.

2. Теперь надо определить, файлы какого типа Apache должен считать скриптами. Ищем в httpd.conf подстроку AddHandler. Переписываем её так:

AddHandler cgi-script .pl

Собственно, для cgi-скриптов можно задать практически любое расширение, но чаще всего используют .pl и .cgi. На самом деле это обычные текстовые файлы, в которых находится код скриптов, написанных на языке Perl.

На этом настройки Apache закончены. Перезапустите сервер. Осталось убедиться в том, что все описаные процедуры проделаны правильно.

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

#!C:/Perl/bin/Perl.exe
print "Content-type: text/html\n\n";
print "Hello world!";

Обратите внимание на первые две строки скрипта.

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

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

Итак, переименум файл с кодом в test.pl. Теперь Напечатаем в адресной строке браузера следующее:

http://localhost/cgi-bin/test.pl

Если вы всё сделали правильно, то в окне браузера появится надпись «Hello world!», в противном случае вы увидите сообщение об ошибке. Для того, чтобы узнать, что именно не понравилось серверу, посмотрите в файл error.log, который находится папке logs: туда пишется расшифровка ошибок сервера. Чтобы ошибки отображались в браузере (вместо обычного незначащего сообщения Internal server error), используйте с своих скриптах директиву

use CGI::Carp qw (fatalsToBrowser);

Учтите, что удалённый сервер, на котором вы собираетесь хранить свои скрипты, наверняка сконфигурирован иначе, нежели ваш личный компьютер. В Unix-системах путь к интерпретатору Perl обычно выглядит так:

#!/usr/bin/perl

Соответственно измените первые строки своих скриптов перед тем, как загружать их на удалённый сервер. Кроме этого вам может потребоваться изменить права для загружаемых файлов: делается это командой chmod 755. Эта команда существует только в Unix/Linux системах, под Windows ничего подобного делать не нужно. Любой приличный ftp-клиент (например -- LeapFTP), с помощью которого вы получаете доступ на удалённый сервер, поддерживает команду chmod.

top

Язык Перл

Язык Perl одновременно очень прост -- и довольно сложен. Просто потому, что элементарные задачи с его помощью решаются в одно действие, как в школьном Бэйсике.

$a = 2;
$b = 2;
$c = $a * $b;
print $c;

Не стоит пугаться «лишних» символов: в Perl'е принято предварять имена переменных префиксами, знак доллара означает, что мы имеем дело со скаляром, т. е. числом или строкой символов. Есть ещё массивы, имена которых начинаются с символа «@», и ассоциативные массивы (начинаются с «%»). Заметьте, что отдельные элементы этих массивов являются скалярами и соответственно записываются через «$»: например, @lines, но $lines[4] (пятый элемент массива @lines, нумерация начинается с нуля).

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

Если придерживаться некоего «среднего» уровня программирования, то Perl скорее всё-таки прост. В нём есть знакомые любому программисту директивы while, if, for, read, print и т. д. Есть в нём и удивительный инструмент, который называется Regular Expressions (регулярные выражения): с его помощью вы можете проделать со строками символов всё, что угодно. Правда, выглядит это жутковато для неподготовленного глаза:

s/%([0-9a-fA-F])/pack("c",hex($1))/ge;

или

s/(href=\".*?)\.+(\")/$1$2/igm;

На самом же деле, как говаривал незабвенный профессор Айсберг, всё очень и очень просто.

Естественно, я не буду писать руководство по программированию на Perl. Их и так слишком много, этих руководств. А вот несколько примеров решения самых распространённых задач, с которыми сталкивается веб-программист, нам не помешают.

top

Андрей Пискунов
Источник: Artefact

Спонсор раздела

Рассылки Subscribe.ru:

Библиотека сайтостроительства - новости, статьи, обзоры
Дискуссионный лист для web-разработчиков
Подписка на MailList.Ru
Автор: NunDesign
Другие разделы
Оптимизация сайтов
Web-студии
» Новое в разделе
Web-дизайн
Web-программирование
Интернет-реклама
Раскрутка сайта
Web-графика
Flash
Adobe Photoshop
Рассылка
Инструменты вебмастера
Контент для сайта
HTML/DHTML
Управление web-проектами
CSS
I2R-Журналы
I2R Business
I2R Web Creation
I2R Computer
рассылки библиотеки +
И2Р Программы
Всё о Windows
Программирование
Софт
Мир Linux
Галерея Попова
Каталог I2R
Партнеры
Amicus Studio
NunDesign
Горящие путевки, идеи путешествийMegaTIS.Ru

2000-2008 г.   
Все авторские права соблюдены.
Rambler's Top100