Добрый день!
О крутые PHP программеры!!! =) Помогите мне пожалуйста реализовать скрипт из книжки! Я пытался раз уже 10 и никак
ПОЖАЛУЙСТА помогите реализовать ИМЕННО (!!!) этот скрипт!
---------------------------------------------------------------------------------
Не секрет, что в наше время интернет страницы просто переполнены графикой. Без этого уже трудно представить себе какой-нибудь популярный проект. Одна часть этой графики — дизайн сайта, другая — баннеры (рекламная информация других сайтов в виде графической, часто даже анимированной, картинки). Посетителей это может раздражать, но все же хорошо сделанный баннер привлекает внимание к себе и, как следствие, к рекламируемому ресурсу. Мы поговорим не о самих баннерах, а о системах управления ими.
Если вам удалось сделать хороший, полезный и посещаемый интернет-проект, значит, вы неизбежно сталкивались с баннерами. Часто Web-мастеры предлагают обмен, иногда самому хочется разместить свой баннер на каком-либо ресурсе. В любом случае очень полезно иметь информацию о том, сколько раз ваш баннер был показан и показывается ли он вообще. Это избавит от необходимости раз в неделю (день, месяц, год и т.д.) проверять, работает ли ваш баннер на чужом сайте или давно удален.
Первое, что необходимо сделать, — определиться с кодом баннера. Код выглядит, как правило, так:
<а href="http://myhost.com">
<IMG SRC="http://myhost.com/ banner.gif" alt="Mou баннер" border="0">
</a>
Конечно, это только шаблон, но с его помощью мы сможем построить то, что будет нужно. А нужно нам будет знать, сколько раз показывается тот или иной баннер на определенном сайте и, допустим, время последнего показа.
Для этого надо выделить один файл учета. Структура файла выглядит следующим образом: каждая строка соответствует одному из сайтов, на котором показывают ваши баннеры. Разделителем между строками является, как обычно, перевод строки. Разделителем в строке между информационными данными можно выбрать символ ^. Этот символ не встречается в адресной строке браузера и нам очень подходит.
Структура строки файла базы данных:
Адрес ^ время последнего посещения ^ количество посещений
Таким образом, получится три поля, которые нужно в дальнейшем будет менять в зависимости от того, откуда вызывается баннер. Чтобы это знать, надо ввести в код баннера специальный параметр — идентификатор сайта. Для каждого из сайтов, участвующих в обмене баннерами, идентификатор должен быть различным.
Чтобы обработать этот идентификатор, вам потребуется вызывать не сам баннер, а специальный скрипт РНР, который сначала обработает все данные, а затем выведет на экран нужный баннер. Вот что у нас получилось из кода баннера:
<а href="http://myhost.com">
<IMG SRC="http://myhost.com/banner.phtml?id=1" alt="Mou баннер" border= "0">
</a>
Как видите, поменялось имя файла и добавился параметр id. Теперь вызывается не непосредственно сам баннер, а скрипт banner.phtml, который и ведет статистику показов и времени посещения. В конце скрипта должен обязательно быть переход на баннер вот в таком виде:
header ("Location: banner.jpg");
Теперь перейдем к вопросу о ведении статистики. Несложно сделать простой подсчет показов — достаточно считать в массив базу данных посещений, и затем увеличить на единицу ячейку массива с индексом, соответствующим переменной 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 на единицу, считать текущее время и присвоить его значение.
Если со счетчиком все ясно, то текущее время требует пояснения. Лучше и проще всего считывать его в формате Unix (см. приложение 6). Полученное значение будет равно количеству секунд, прошедшему с 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);}
Вот и все, так как все поставленные задачи мы выполнили.
О крутые PHP программеры!!! =) Помогите мне пожалуйста реализовать скрипт из книжки! Я пытался раз уже 10 и никак
ПОЖАЛУЙСТА помогите реализовать ИМЕННО (!!!) этот скрипт!
---------------------------------------------------------------------------------
Не секрет, что в наше время интернет страницы просто переполнены графикой. Без этого уже трудно представить себе какой-нибудь популярный проект. Одна часть этой графики — дизайн сайта, другая — баннеры (рекламная информация других сайтов в виде графической, часто даже анимированной, картинки). Посетителей это может раздражать, но все же хорошо сделанный баннер привлекает внимание к себе и, как следствие, к рекламируемому ресурсу. Мы поговорим не о самих баннерах, а о системах управления ими.
Если вам удалось сделать хороший, полезный и посещаемый интернет-проект, значит, вы неизбежно сталкивались с баннерами. Часто Web-мастеры предлагают обмен, иногда самому хочется разместить свой баннер на каком-либо ресурсе. В любом случае очень полезно иметь информацию о том, сколько раз ваш баннер был показан и показывается ли он вообще. Это избавит от необходимости раз в неделю (день, месяц, год и т.д.) проверять, работает ли ваш баннер на чужом сайте или давно удален.
Первое, что необходимо сделать, — определиться с кодом баннера. Код выглядит, как правило, так:
<а href="http://myhost.com">
<IMG SRC="http://myhost.com/ banner.gif" alt="Mou баннер" border="0">
</a>
Конечно, это только шаблон, но с его помощью мы сможем построить то, что будет нужно. А нужно нам будет знать, сколько раз показывается тот или иной баннер на определенном сайте и, допустим, время последнего показа.
Для этого надо выделить один файл учета. Структура файла выглядит следующим образом: каждая строка соответствует одному из сайтов, на котором показывают ваши баннеры. Разделителем между строками является, как обычно, перевод строки. Разделителем в строке между информационными данными можно выбрать символ ^. Этот символ не встречается в адресной строке браузера и нам очень подходит.
Структура строки файла базы данных:
Адрес ^ время последнего посещения ^ количество посещений
Таким образом, получится три поля, которые нужно в дальнейшем будет менять в зависимости от того, откуда вызывается баннер. Чтобы это знать, надо ввести в код баннера специальный параметр — идентификатор сайта. Для каждого из сайтов, участвующих в обмене баннерами, идентификатор должен быть различным.
Чтобы обработать этот идентификатор, вам потребуется вызывать не сам баннер, а специальный скрипт РНР, который сначала обработает все данные, а затем выведет на экран нужный баннер. Вот что у нас получилось из кода баннера:
<а href="http://myhost.com">
<IMG SRC="http://myhost.com/banner.phtml?id=1" alt="Mou баннер" border= "0">
</a>
Как видите, поменялось имя файла и добавился параметр id. Теперь вызывается не непосредственно сам баннер, а скрипт banner.phtml, который и ведет статистику показов и времени посещения. В конце скрипта должен обязательно быть переход на баннер вот в таком виде:
header ("Location: banner.jpg");
Теперь перейдем к вопросу о ведении статистики. Несложно сделать простой подсчет показов — достаточно считать в массив базу данных посещений, и затем увеличить на единицу ячейку массива с индексом, соответствующим переменной 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 на единицу, считать текущее время и присвоить его значение.
Если со счетчиком все ясно, то текущее время требует пояснения. Лучше и проще всего считывать его в формате Unix (см. приложение 6). Полученное значение будет равно количеству секунд, прошедшему с 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);}
Вот и все, так как все поставленные задачи мы выполнили.