Информационный сайт

 

Реклама
bulletinsite.net -> Книги на сайте -> Программисту -> Кухарчик А. -> "РНР: обучение на примерах" -> 33

РНР: обучение на примерах - Кухарчик А.

Кухарчик А. РНР: обучение на примерах — Мн.: Новое знание, 2004. — 237 c.
ISBN 985-475-050-7
Скачать (прямая ссылка): phpobuchennaprimerah2004.pdf
Предыдущая << 1 .. 27 28 29 30 31 32 < 33 > 34 35 36 37 38 39 .. 68 >> Следующая

Однако у нас более сложная задача — организовать возможность просмотра всей статистики в дальнейшем и запомнить время последнего показа баннера. Значит, необходимо записывать в базу и время, и адрес сайта, с которого вызывается баннер. Адрес мы
будем запоминать только для того, чтобы в дальнейшем можно
было узнать статистику показов, а в самой процедуре подсчета он не участвует.
Итак, наш скрипт прежде всего должен проверить на правильность полученную переменную $id. Если она не больше установленного значения и не меньше ноля, то все нормально, иначе присваиваем переменной $id ноль или выводим сообщение об
ошибке (как кому как нравится). Значение переменной Sid
с индексом ноль нужно специально зарезервировать для таких случаев, когда помещен неправильный код.
Если же все нормально, а так чаще всего и бывает, скрипт должен считать в память файл с базой данных:
$adds = "url.txt";
$txt = file($adds);
Вся информация оказывается в массиве с именем $txt. Идентификатор указывает на индекс элемента массива, содержащего данные сайта, с которого вызван баннер. Обратиться к этим данным очень просто:
$str = trim(str_replace ("\n","", $txt[$id]));
Одновременно мы удалили пробелы в начале и в конце строки
и символ перевода строки.
Ах, баннеры, баннеры..._113
Можно при необходимости проверить, есть ли такая учетная запись. Дальше надо разложить информацию на три составляющие — адрес, время последнего доступа и количество показов. Вот как это проще всего сделать:
list ($add, $time, Scounter) = split ("Л", Sstr) ;
Мы использовали наш разделитель — Л. Вся информация извлечена, теперь ее надо обновить и снова записать в файл. Для этого нужно просто увеличить переменную $counter на единицу, считать текущее время и присвоить его значение.
Если со счетчиком все ясно, то текущее время требует пояснения. Лучше и проще всего считывать его в формате Unix (см. приложение 6). Полученное значение будет равно количеству секунд, прошедшему с 1 января 1970 года. Это количество секунд очень легко
преобразуется в дальнейшем в конкретные даты, а хранить его
еще проще, так как это, по сути, просто большое число.
Получить его можно так:
Stime = time(void); Scounter+ + ;
Заодно увеличили показания счетчика. Теперь осталось только записать всю информацию снова в файл. Объединяем строку и заносим полученное значение в нужную ячейку массива (напомню, на нее указывает идентификатор в переменной $id):
$txt[$id] = $add."^".$time."~\$counter."\n";
И тут тоже не забываем о нашем разделителе и о переводе строки в конце для правильного считывания в дальнейшем. Перед тем
как записать весь массив в файл с базой данных, необходимо
сначала объединить массив в одну строку:
$str = implode("", $txt);
Sfp = fopen($adds, "w");
if (Sfp) { Sfw = fwrite($fp, Sstr); fclose(Sfp); } Вот и все, так как все поставленные задачи мы выполнили.
114
Программирование на РНР
Я не привел весь код скрипта, а по порядку объяснял все действия как можно подробнее, чтобы вы не занимались бездумным копированием, а постарались самостоятельно развить предложенные мной идеи.
Счетчик посещений с выводом информации
на экран
В качестве компенсации ' я предлагаю вам готовый скрипт вывода статистики на экран. Для этого достаточно вызвать в браузере файл stat.phtml.
Вот его код:
<?
$adds = "url.txt" ; $txt = file($adds);
$i = 0;
while ($i <= count ($txt)) :
$temp = trim(str_replace ("\n","", $txt ;
list ($add, $time, $counter) = split ("Л", $str); echo $add." - ".$counter." : ".$time."<br>";
endwhile; ?>
Как видите, еще проще. Единственная трудность — перевести формат времени в разумный вид, но для этого существует масса хороших и не очень алгоритмов. Их вы уже найдите сами — пусть это будет в качестве домашнего задания.
Создание динамического меню
115
Счетчик сессий
Попробуем сделать счетчик сессий: <?
session_name ("virtualbrest") ; session_start (); session_register("counter"); $counter = @$counter +1; ?> <html><body>Haжмитe кнопку "Обновить", чтобы увеличить счетчик <Ьг>Счєтчик: <?=$counter?> </body></html>
В первой строке кода мы инициализируем имя сессии для SID, чтобы в дальнейшем можно было легко различать разные сессии. Если этого не сделать, РНР автоматически откроет сессию с именем PHPSESID. Функция session_start () инициализирует сессию, а функция session_register("counter") регистрирует в сессии переменную $counter.
Если запустить данный код и несколько раз обновить окно браузера, мы увидим, как счетчик увеличивается.
Создание динамического меню
Рассмотрим, как легко можно организовать выбор нескольких позиций для отправки формы. Такое часто бывает нужно для навигации по сайту, но конкретную задачу я не ставил, а только описал общие принципы.
В том же каталоге, где будет работать этот скрипт, нужно создать файл logo.txt и внести в него нужное количество строк. Именно на основании информации из него и будет построено меню.
116
Программирование на РНР
1 <?
Предыдущая << 1 .. 27 28 29 30 31 32 < 33 > 34 35 36 37 38 39 .. 68 >> Следующая
Реклама
Авторские права © 2009 AdsNet. Все права защищены.
Rambler's Top100