Web-инжиниринг

       

Isssi


Вызов скрипта через SSI   

Реализация поиска через Server Site Incledes и ISINDEX опирается на тот факт, что в качестве поискового скрипта при ISINDEX, если не указан атрибут action формально вызывается тот же самый документ, в котором ISINDEX указан. Список ключевых слов при этом присоединяется к URL данного документа после символа "?". Это и есть одна из форм HTTP-запроса браузера к серверу по методу доступа GET, которая носит название ISINDEX.

Сам HTML-документ при этом будет выглядеть следующим образом:

<HTML>

<HEAD>

<title>ISINDEX</title>

<isindex prompt="Введите список ключевых слов:">

</HEAD>

<BODY>

<h1>Тестирование контейнера ISINDEX</h1>

</BODY>

</HTML>

Как видно из этого текста, в нем нет даже намека на вызов скрипта. Если все оставить так как есть, то действительно ничего не будет работать, но если вставить HTML-комментарий формата SSI, то тогда мы получим страницу со скриптом:



<HTML>

<HEAD>

<title>ISINDEX</title>

<isindex prompt="Введите список ключевых слов:">

</HEAD>

<BODY>

<h1>Тестирование контейнера ISINDEX</h1>

<hr>

<!--#exec cgi=grep.cgi -->

</BODY>

</HTML>

В данном случае grep.cgi очень простой скрипт. Это просто вызов программ grep по текущему каталогу при условии если указан поисковый критерий, т.е. если есть запрос после "?", то скрипт отработает и выдаст результаты, если нет, то страница останется девственной, т.к. скрипт ничего не подставит вместо себя.

Сама программа grep.cgi при этом может выглядеть примерно следующим образом:

#!/usr/local/bin/perl

print "Pragma: no-cache\n\n";

if(length($ENV{"QUERY_STRING"})==0)



 {

  die;

 }

$str = "grep ".$ENV{"QUERY_STRING"}." \* \|";

open OUT, $str;

while(<OUT>)

 {

  print $_;

 }

close OUT;

В данном случае идея программы проста. Сначала проверяем наличие запроса после символа "?". Этот запрос помещается сервером в переменную окружения QUERY_STRING. Если длина строки в QUERY_STRING равна 0, то запроса нет, в противном случае вызываем команду grep и распечатываем результат ее работы.

При реализации следует учесть, что ключевых слов может быть много, что они могут быть на русском языке, и их придеться перекодировать, что результат работы grep следует предварительно разобрать и подготовить в HTML-формате для размещения внутри страницы.

далее...


Содержание раздела