|
Программирование
On-line приложения
Почитать
Web-сервер Apache
Печать и форматирование
MySQL
Разные рецепты
Сборка/установка
Справки
Философия
Мой опыт
Скачать
Программы на Tcl/Tk (GUI)
Программы на Python/Tk (GUI)
Программы (CLI)
Help
Хобби
Фракталы
on-line
Язык для рисования фракталов
Гиперкуб
Теория относительности
Ампуллярии
Преподавание
Студенту/абитуриенту
Мой опыт
Автора!
|
Добавление HTML «на лету»Вопрос о том, как добавить некий фрагмент HTML-кода к существующим статическим HTML-файлам «на лету» (не модифицируя сами фалы), встречается на форумах так часто, что я решил раскатать здесь об одном, самом простом и доступном, способе. ЗадачаИтак, пусть мы имеем набор HTML-файлов вида: <html> <body> <h1>ok</h1> </body> </html> Нам необходимо, выдавая их клиентам,
автоматически добавлять после <p>добавленный код</p> (видимо это некий код, содержащий баннер или рекламу). РешениеНастройка Web-сервера ApacheВсё, что нам понадобится, это директива Action text/html /cgi-bin/translate.cgi Эту директиву можно использовать где угодно: в основном
конфигурационном файле Теперь, при обращение к файлу, имеющему MIME-тип
Скрипт-обработчикПриведу пример на Perl, хотя эти действия могут быть произведены на любом языке: #!/usr/bin/perl
# выдаём заголовок
print "Content-Type: text/html\n\n";
# получаем имя запрашиваемого файла
# из переменной окружения PATH_TRANSLATED
my $file=$ENV{'PATH_TRANSLATED'};
# считываем весь файл
open F, "<$file" or die;
my $content=join('', <F>);
close F;
# производим все необходимые замены
$content=~s{<body>}{<body><p>добавленный код</p>};
# выдаём преобразованный файл клиенту
print $content;Как видите, полный путь к файлу, который запросил пользователь,
передаётся в переменной окружения <html> <body><p>добавленный код</p> <h1>ok</h1> </body> </html> Обратите внимание, что данный скрипт написан весьма схематично. В реальной жизни, конечно, следует проверять имя запрашиваемого файла (не пытается ли злоумышленник выудить у вас секретную информацию). Кроме того, замену я сделал очень просто, мой скрипт не справится с тегом: <body bgcolor="#999999"> Но, я думаю, усовершенствование этого скрипта для вас не будет проблемой. Единственное, на что следует обратить внимание, это на обработку ситуации, когда модификацию документа не удалось выполнить. Возможно, при этом вы захотите выдавать не сам документ, а, на пример, сообщение о том, что формат запрошенного файла не верен. |
|
|
|