Internet и CGI
§1. Загрузка ресурса IMG.
Задача.Вы хотите, чтобы на вашей HTML-странице, случайным образом, загружались бы графические изображения, перечень которых может постоянно изменяться и пополняться.
Решение.
Используем атрибут SRC эленента IMG для загрузки CGI-ресурса:
Надо отметить, что этот прием достаточно часто используется в Web-программировании. Все сложности сводяться к написанию премлемого CGI-скрипта, который отвечал бы поставленной задаче. В качестве наглядного примера приведем давольно простой скрипт, обеспечивающий случайный вывод изображения из ограниченного списка графических файлов:
#!/usr/bin/perl $path = "c:/apache/htdocs"; @pic=('c0.gif','c1.gif','c2.gif','c3.gif','c4.gif','c5.gif','c6.gif','c7.gif','c8.gif'); srand; $id=int(rand(9)); $gif=$path.'/images/'.$pic[$id]; print "Content-Type: image/gif\n\n"; open G,$gif; binmode( G ); binmode( STDOUT ); print
Для полноты картины приведем и текст HTML-страницы:
BOTTOM Text text ......
В этом примере видно, что дизайн может быть реализован отдельно от загружаемых изображений (но, с учетом их ширины и высоты) и может изменяться независимо от CGI-сценария и независимо от CGI-программиста. Более сложный вариант CGI-программы, обеспечивающий случайный выбор из переменного списка изображений, должен включать код открытия обособленной директории файлов изображений:
... ... ... $DIR_PICTURES = $path.'/picturies'; opendir (ETC, $DIR_PICTURES)die "no directory!: $!"; $i=0; foreach $filename (readdir(ETC)) { if($i > 1){ $k=$i-2; $my_pic[$k]=$filename;} $i++;} close (ETC); $leng=@my_pic; srand; $id=int(rand($leng)); $gif=$path.'/images/'.$my_pic[$id]; ... ... ...
В этом скрипте, имена файлов заносяться в массив @my_pic, причем для пропуска точек (. и ..) в верхей части директории, выполняется условый оператор в зависимости от значения счетчика (переменная $i).
В заключение отметим, что элемент IMG и сответствующий CGI-сценарий часто используются в качестве скрытых счетчиков посетителей страниц. Такие скрипты могут также содержать процессы MAIL, которые позволяют, в сою очередь, известить владельца о посещении страницы визитером, имеющего такой-то IP-адрес, зашедший с такой-то страницы и т.п.
§2. Загрузка CGI-сценариев в контейнере IFRAME.
Основной привлекательностью использования элемента IFRAME является возможность выделения в произвольном месте HTML-страницы прямоугольной области произвольных размеров. Этот прием часто применяется для внедрения в статическую HTML-страницу, новостной, часто меняющейся информации, как текстовой, так и графической. При этом, как правило, новостная вставка, сама представляет собой HTML-страницу (файл). Применение, в качестве загрузочного ресурcа CGI-сценария позволит автоматизировать процедуру смены новостей.Задача.
Автоматизировать процесс смены новостной информации (текстовой) в поле статической HTML-страницы.
Решение.
CGI программа считывает текстовый файл с диска, или выполняет выборку из базы данных (БД), генерирует на лету документ HTML и загружает ресурс в элемент IFRAME:
.
Отметим, что элемент IFRAME представляет собой встроенный элемент Internet Explorer (IE). Начнем рассмотрение с CGI-скрипта:
#!/usr/bin/perl print "Content-Type: text/html\n\n"; $path = "c:/apache/htdocs"; $FILE_NEWS=$path.'/txt/bulletin.txt'; open(LIST,"<$FILE_NEWS"); @lines=
- ; close(LIST); #-------HTML-include: print <
@lines |