Издательский дом ООО "Гейм Лэнд"СПЕЦВЫПУСК ЖУРНАЛА ХАКЕР #27, ФЕВРАЛЬ 2003 г.

ЖЕМЧУЖНЫЙ САЙТ - cкриптинг на перле

Леха ББ ака Alexys

Спецвыпуск Xakep, номер #027, стр. 027-026-3


}

# здесь мы проводим некоторые манипуляции с парами "ПАРАМЕТР:ЗНАЧЕНИЕ", зависящие от того, есть ли у параметра название или названия нет, а передано только значение (такое тоже бывает, но редко)

return 1;

}

Для работы этой процедуры где-нибудь в начале скрипта пропиши строку:

&FormInput(*input);

После этого ты сможешь обрабатывать все переменные из формы. Но об этом чуть позже. А пока начнем писать скрипт, точнее - делать рыбу с помощью скрипта. Такие вещи, как генерацию title'ов, я оставлю тебе на самостоятельное изучение.

Во избежание путаницы забей на values.pl - его ты сделал, пусть он лежит себе спокойно в папке cgi-bin. Займись написанием основного скрипта.

$script="arts.pl";

# имя скрипта

$homedir=$maindir.'arts/';

# папка, где хранятся статьи

print "<html><head>\n";

# знак \n означает переход на другую строку. Попробуй без нее посмотреть html-текст, нажав куда надо в броузере :)

print "<link rel=\"stylesheet\" href=$mydir/styles.css>\n";

# путь к css-файлу и его имя

print "</head>\n";

print "<body>\n";

Верхушка страниц наверняка будет повторяться на всех страницах. Рекомендую запихнуть html-код шапки страниц в отдельный файл и обозвать его как header.txt.

$headerfile=$maindir.'header.txt';

# переменная с путем к файлу шапки

open(HEA, "$headerfile");

# открываем файл шапки на чтение

@header=<HEA>;

# засовываем весь контент файла в массив

close (HEA);

# закрываем файл

foreach (@header) {print $_;}

# выводим весь массив

Под шапкой пусть будет горизонтальная менюшка с линками на основные разделы сайта. Ее опять же можно засунуть в отдельный файл, но только не полностью. Создай файл navi.txt, в который запихни html-код с ссылками на основные разделы:

<div>

<a class="navibar" href="/link1">link 1</a> | 

<a class="navibar" href="/link2">link 2</a> | 

<a class="navibar" href="/link3">link 3</a> | 

<a class="navibar" href="/link4">link 4</a> | 

<a class="navibar" href="/link5">link 5</a> | 

</div>

В скрипте же напиши следующее:

print "<table cellspacing=0 cellpadding=0 border=0 width=100% bgcolor=#99CCFF>\n";

print "<tr><td>\n";

# сюда будет вставлен контент из файла navi.txt

$navifile=$maindir.'navi.txt';

# переменная с путем к файлу шапки

open(NAV, "$navifile");

@navi=<NAV>;

close (NAV);

foreach (@navi)

{

print $_;

# $_ - переменная по умолчанию, т.е. главная переменная текущего цикла

}

print "</td></tr></table>\n";

А вот теперь настала пора вспомнить об обработке форм FormInput. Если быть точнее, то генерация тысяч страниц одним скриптом возможна только благодаря передаче параметров. Когда-нибудь обращал внимание на странные адреса, типа http://winfo.org/cgi-bin/arts.pl?raz=updates&subj=sp4win2k&id=al&act=read (ссылка не работает по причине конфискации нашего сервака спецслужбами ламерикосов. Пользуясь случаем, передаем им привет :) - прим. ВИНфо-крю). Параметры скрипта будем передавать полностью в строке адреса (то, что идет после вопросительного знака). Точно так же обрабатываются параметры, передаваемые формой методом GET, но про формы и методы можно написать не только статью, но и целый журнал :). В указанном примере вместе с адресом скрипту передаются сразу 4 параметра, которые разделены амперсандом (значок &). Только все эти параметры были сгенерированы скриптом на основе файла с каким-то списком. От тебя потребуется только придумать имена таких "типа форм", а также как-нибудь придумать имя переменной, которая будет отвечать за действие скрипта. Я обычно обзываю ее как act (action - действие), поэтому и здесь будет так. В зависимости от значения act'а будет меняться контент страниц.

Назад на стр. 027-026-2  Содержание  Вперед на стр. 027-026-4