Внимание! это - авторская информация, защищенная законом об авторских правах. Но вы МОЖЕТЕ размещать данные тексты у себя на сайте, при условии размещения с текстом активной ссылки на первоисточник и указания автора:
Не секрет, что в наше время Интернет-странички просто переполнены графикой. Без этого уже
трудно представить себе какой-нибудь популярный проект. Часть этой графики
является дизайном сайта, и с этим мы предпочитаем мириться. Другая часть – это
баннеры, рекламная информация других сайтов в виде графической (часто даже
анимированной) картинки. Это иногда раздражает, иногда выводит из себя, а
иногда может оказаться полезным, так как хорошо сделанный баннер привлекает
внимание и к себе и к рекламируемому ресурсу. Но у нас разговор пойдет не о
самих баннерах, а о системах управления ими.
Если Вам удалось сделать хороший, полезный и посещаемый
Интернет-проект, значит, Вы неизбежно сталкивались с баннерами. Часто другие
Web-мастера сами предлагают обмен, иногда самому хочется поставить свой баннер
на каком-либо ресурсе. Но в любом случае очень полезно иметь информацию о том,
сколько раз Ваш баннер был показан и показывается ли он вообще. Это избавит от
необходимости раз в неделю (день, месяц, год…) проверять, работает ли Ваш
баннер на чужом сайте или давно удален.
Конечно, обойтись средствами HTML тут просто невозможно,
поэтому приготовьтесь программировать.
Первое, что надо сделать – это определиться с кодом Вашего
баннера и с самим баннером. Код выглядит, как правило, так:
Конечно, это только шаблон, но с него мы сможем построить
то, что нам будет нужно. А нужно нам будет знать, сколько раз показывается тот
или иной баннер на определенном сайте. И желательно – время последнего показа.
Для этого надо выделить один файл, который будет работать
базой данных. Структура сайта выглядит следующим образом – каждая строчка
соответствует одному из сайтов, на котором показывают Ваши баннеры.
Разделителем между строками является, как и обычно, перевод строки.
Разделителем в самой строке между информационными данными можно выбрать символ
^ (это на клавиатуре Shift+6). Этот символ не встречается в адресной строке
браузера, и нам очень даже подходит.
Структуру строки файла базы данный выберем вот так:
Адрес ^
время последнего посещения ^ количество посещений
Таким образом, получается три поля, которые нужно в
дальнейшем будет менять в зависимости от того, откуда вызывается баннер. Для
того, что бы это знать, надо ввести в код баннера один параметр – идентификатор
сайта. Для каждого из сайтов, участвующих в баннерообмене, идентификатор должен
быть различным.
И, кроме того, что бы обработать этот идентификатор, Вам
потребуется вызывать не сам баннер, а специальный скрипт PHP, который сначала собственно
обработает все данные, а затем выведет на экран нужный баннер. Вот что у нас
получилось из кода баннера:
<a
href="http://myhost.com">
<IMG
SRC="http://myhost.com/baner.phtml?id=1"
alt="Мой баннер" border="0"></a>
Как видите, поменялось имя файла, и добавился параметр id.
Теперь вызывается не непосредственно сам баннер, а скрипт baner.phtml, который
и ведет статистику показов и времени посещения. В конце скрипта должен
обязательно быть переход на баннер вот в таком виде:
header
("Location: baner.gif");
Теперь давайте перейдем к вопросу о ведении статистики.
Несложно сделать просто подсчет показов, так как задача эта тривиальна –
достаточно считать в массив базу данных посещений, и затем увеличить на 1
ячейку массива с индексом, соответствующим переменной id. Это наш
идентификатор.
Но у нас более сложная задача – организовать возможность
просмотра всей статистики в дальнейшем и запоминать время последнего показа
баннера. Значит, надо записывать в базу и время, и адрес сайта, с которого
вызывается баннер. Адрес мы будем запоминать только для того, что бы в
дальнейшем можно было узнать статистику показов, а в самой процедуре подсчета
он не участвует.
Итак, начали. Наш скрипт, прежде всего, должен проверить
на правильность полученную переменную $id. Если она не больше установленного
значения и не меньше ноля, то все нормально, иначе присваиваем переменной id
ноль, или выводим сообщение об ошибке. Кому как нравится. Значение переменной
id с индексом ноль нужно специально зарезервировать для таких вот ошибок, и
всегда будет ясно – кто-то разместил не правильный код или допустил в нем
ошибку при наборе.
Но, если же все нормально, а так чаще всего и будет,
скрипт должен считать в память файл с базой данных:
$adds = "url.txt";
$txt = file($adds);
Вся информация оказывается в массиве с именем $txt.
Идентификатор указывает на тот индекс, где в массиве расположены данные сайта,
с которого вызван баннер. Обратиться к этим данным очень просто:
$str =
trim(str_replace ("\n","", $txt[$id]));
Попутно мы вырезали пробелы в начале и конце строки и
удалили символ перевода строки.
Хорошо бы проверить, есть ли такая учетная запись, но это
по желанию. Дальше надо разложить информацию на три составляющих – адрес, время
последнего доступа и количество показов. Вот как это проще всего сделать:
list
($add, $time, $counter) = split ("^", $str);
Вот тут нам и пригодился наш разделитель. Все, вся
информация извлечена, теперь ее надо обновить и записать обратно. Собственно,
нужно просто увеличить переменную $counter на единицу, считать текущее время и
присвоить переменной $time его значение.
Если со счетчиком все ясно, то время требует пояснения.
Лучше и проще всего считывать его в Unix-овском формате. Полученное значение
будет равно количеству секунд, прошедшему после 1 января 1970 года. Ну, так уж
принято, хоть и немного странно для простого пользователя. Но, нам важно, что
это число секунд очень легко преобразуется в дальнейшем в конкретные даты, а
хранить его еще проще, так как это, по сути, просто большое число.
Его получить можно так:
$time =
time(void);
$counter++;
Заодно увеличили показания счетчика. Все – теперь осталось
только записать всю информацию обратно. Суммируем строку, и заносим полученное
значение в нужную ячейку массива (напомню, на нее указывает идентификатор в
переменной $id):
$txt[$id] =
$add."^".$time."^".$counter."\n";
И тут тоже не забываем про наш разделитель и про перевод
строки в конце для правильного считывания в дальнейшем. Осталось только
записать весь массив в файл с базой данных, но для этого его надо сначала
объединить в одну строку:
$str=implode("", $txt);
$fp = fopen($adds, "w");
if ($fp) { $fw = fwrite($fp, $str); fclose($fp); }
Вот и все, так как все поставленные нами задачи мы
выполнили.
Я намеренно не приводил всего кода скрипта целиком, а
только по пунктам объяснял все шаги как можно подробнее.
Я хотел бы, что бы Вы не занимались бездумным
копированием, а постарались самостоятельно развить предложенные тут идеи. В
качестве компенсации я предлагаю Вам готовый скрипт вывода статистики на экран.
Для этого достаточно вызвать в браузере файл stat.phtml.
Вот его код:
<?
$adds = "url.txt";
$txt = file($adds);
$i = 0;
while ($i <= count($txt)):
$temp = trim(str_replace ("\n","",
$txt[$i]));
list ($add, $time, $counter) = split ("^",
$str);
echo $add." – ".$counter." :
".$time."<br>";
$i++;
endwhile;
?>
Как видите, еще проще. Единственная трудность – перевести
формат времени в разумный вид, но для этого существует масса хороших и не очень
алгоритмов. Их Вы уже найдите сами – пусть это будет в качестве домашнего
задания :-).
Внимание! это - авторская информация, защищенная законом об авторских правах. Но вы МОЖЕТЕ размещать данные тексты у себя на сайте, при условии размещения с текстом активной ссылки на первоисточник и указания автора:
Вы держите в руках книгу, которая поможет вам научиться программировать на РНР и создвать базы данных на MySQL. Если вашей целью является написание программ для веб-серверов, то...
С. Холзнер
Вашему вниманию предлагается один из мировых бестселлеров, посвященных программированию на РНР. В рамках данной книги автору удалось, начав с основ языка РНР, охватить весьма...
А. Яковлев
Рассказано, как добиться успеха в привлечении на веб-сайт целевых посетителей. Книга содержит необходимый и достаточный материал для самостоятельного продвижения интернет-порталов...
Эрл Каслдайн, Крэйг Шарки
Это практическое руководство поможет вам с легкостью освоить мастерство разработчика jQuery. Описанные в нем профессиональные техники, тактики и приемы помогут быстро изучить...