| ||
Баннерная система на CGIСергей Гуйдя brima@aiq.ru Я думаю, среди популярных сайтов вряд ли найдется много мест, где не висел бы какой-нибудь баннер. Конечно, не спорю, если баннеров слишком много, это уже плохо - бедный пользователь устанет ждать, пока они подгрузятся. Однако не стоит подходить к этому делу однобоко, исключительно как к тормозному элементу -- хорошие баннеры представляют собой настоящие произведения искусства. Возможно, когда-нибудь в Интернете даже откроется музей баннерной живописи и анимации. Простейший случай применения баннеров -- это дружеский обмен ими: ты мне, я тебе. Этот случай настолько прост, что на нем не стоит особо заострять свое внимание. Если вам это потребуется, просто нарисуйте картинку и создайте вот такой код:
<A href="http://www.myserver.ru/"> Отошлите этот код тому, у кого вы собираетесь разместить свой баннер. Ну и, соответственно, получите от него HTML-код баннера и вставьте его в свою страничку. Вот и весь обмен баннерами. Другое дело, если вы собираетесь организовать свою баннерную службу. Неважно, на каких принципах она будет строиться: это может быть тематическая баннерная сеть, пункт обмена баннерами либо центр баннерной рекламы. Важно сразу уточнить те задачи, которые будут стоять перед вами при реализации данной идеи:
Давайте решать данные задачи по порядку.
Для начала наметим поля, необходимые для
регистрации баннера. В простейшем случае это
собственно имя файла с изображением баннера
(добавление изображения баннера в баннерную
службу можно решить с помощью метода, описанного
в разделе "Загрузка документов" урока 4),
соответствующий URL и какая-либо информация о
владельце баннера (в нашем случае это будет e-mail
владельца баннера, а вообще можно поместить в
базу любую необходимую информацию). В
большинстве баннерных служб баннеры
индексируются в базе по номерам. Этого подхода
будем придерживаться и мы. Имя файла изображения Затем нам потребуется информация о пользователях, размещающих у себя баннеры. Для них в простейшем случае подойдет запись, содержащая контактный E-mail и URL документа, на который помещается баннер. Индексируются они тоже по номерам, и под записи мы отведем директорию /banner_users. Итак, вот формат записи о месте размещения баннера: E-mail и свалим в директорию /banner_gifs. Время IP-адрес Баннер Разместим данные файлы соответственно в директориях /show_log и /click_log. Кстати, протоколируя показы, мы автоматически страхуемся от перехода по неправильному URL при щелчке на баннере. Ведь для определения нужного адреса перехода достаточно выбрать URL, соответствующий номеру последнего баннера, показанного данному IP-адресу. Кстати, протокол показов также может быть использован в алгоритме выбора следующего баннера для показа. Задачу регистрации вы, надеюсь, сможете решить и без меня. Регистрация баннера сводится к регистрации URL и закачке самого баннера. А при регистрации страницы просто фиксируется URL страницы, на которую вешается баннер. Результатом такой регистрации будет выдача HTML-кода следующего содержания, который следует разместить на странице: <A
href="http://www.myserver.ru/banner/banner_click.cgi?номер">
Примечание: естественно, регистрация настолько проста лишь в нашем демонстрационном случае. В более сложных вариантах, используемых в профессиональных баннерных сетях, может быть зарегистрировано очень много дополнительных опций, таких, как где, когда и кому показывать баннеры, -- это позволит организовать профессиональную рекламную кампанию по "раскрутке" сервера. Следующей задачей в нашем списке значится выбор баннера для показа. Для начала рассмотрим самый простой вариант, когда баннер выбирается из базы по случайному принципу. Для получения списка файлов в директории применяем следующий код: open(DIR, "имя_директории"); Нам потребуется получить список файлов в директории /banner_info, при этом мы отфильтруем этот список, оставив только те имена файлов, которые представляют собой номера баннеров. Скрипт, показывающий баннер, будет иметь следующий вид: #!/usr/bin/perl Теперь, собственно, приступим к процедуре обработки щелчка на баннере. Существенным (в нашей упрощенной реализации) моментом можно считать то, что перед щелчком был показ. (Это может и не иметь значения, если у вас реализован временной принцип, гласящий, скажем, следующее: "с 23:00 до 23:05 на этой странице будет висеть баннер N, с 23:05 до 23:10 -- баннер M, и т. д.") При щелчке мы должны зарегистрировать это событие и произвести редирект: #!/usr/bin/perl В принципе, простейшая баннерная система реализована. Она, конечно, допускает разнообразные доработки. Так, можно модифицировать алгоритм показа. Скажем, алгоритм смены баннеров на аккаунте можно запускать отдельным процессом по crontab'у. Вы тогда сможете проанализировать, какие баннеры пользуются наибольшей популярностью (не по показам, а по щелчкам). При этом можно, например, с вероятностью 50% выбирать баннеры из числа наиболее популярных, а с оставшейся вероятностью 50% -- из всех остальных. Возможны и более существенные усовершенствования алгоритмов работы баннера. Однако имейте в виду, что написать профессиональную баннерную сеть достаточно сложно. Впрочем, если вы не ставите перед собой столь глобальных задач, то ваших знаний вполне должно хватить, чтобы реализовать пункт обмена баннерами в рамках какого-нибудь тематического клуба. Домашняя страница автора: http://www.brima.aiq.ru/
| ||
Copyright © "Internet Zone", http://www.izcity.com/, info@izcity.com |