Sdscompany.ru

Компьютерный журнал
0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Php счетчик посещений страницы

Php счетчик посещений страницы

Reg.ru: домены и хостинг

Крупнейший регистратор и хостинг-провайдер в России.

Более 2 миллионов доменных имен на обслуживании.

Продвижение, почта для домена, решения для бизнеса.

Более 700 тыс. клиентов по всему миру уже сделали свой выбор.

Бесплатный Курс «Практика HTML5 и CSS3»

Освойте бесплатно пошаговый видеокурс

по основам адаптивной верстки

на HTML5 и CSS3 с полного нуля.

Фреймворк Bootstrap: быстрая адаптивная вёрстка

Пошаговый видеокурс по основам адаптивной верстки в фреймворке Bootstrap.

Научитесь верстать просто, быстро и качественно, используя мощный и практичный инструмент.

Верстайте на заказ и получайте деньги.

Бесплатный курс «Сайт на WordPress»

Хотите освоить CMS WordPress?

Получите уроки по дизайну и верстке сайта на WordPress.

Научитесь работать с темами и нарезать макет.

Бесплатный видеокурс по рисованию дизайна сайта, его верстке и установке на CMS WordPress!

*Наведите курсор мыши для приостановки прокрутки.

Счетчик посещений сайта своими руками на PHP и MySQL

Размер: 53,8 Мб.

Длительность: 34 мин. 25 сек.

В этом уроке мы с вами рассмотрим, как можно сделать простой счетчик посещений для вашего сайта. Пример мы будем реализовывать на PHP с использованием базы данных.

Понятно, что сейчас существует множество готовых решений — начиная от liveinternet и mail.ru, и заканчивая Яндекс.Метрикой.

Все эти сервисы предоставляют множество различной статистической информации, однако меня все равно периодически просят рассказать, как можно создать пусть даже очень простой, но свой собственный счетчик посещений сайта.

Мы не будем фиксировать десятки и сотни параметров, как это делают монстры, вроде Яндекса. Я покажу вам сам принцип создания счетчика, а вы, при желании, сможете туда добавить больше функций, если это будет необходимо.

Все исходники, используемые в процессе урока, приложены в архив вместе с видеоуроком.

Вы можете просмотреть этот урок прямо сейчас, либо скачать его себе на компьютер по ссылке выше.

Под видео вы найдете сокращенную текстовую версию для этого видеоурока.

Краткий обзор урока (все подробности смотрите в видео):

Что нам понадобится?

1. 4 практически идентичных файла, играющих роли разных страниц сайта (index.php, contacts.php, about.php и uslugi.php)
2. Файл .htaccess для задания кодировки сервера в значение UTF-8
3. Папка css с файлом стилей. Там прописано немного простейших стилей для наших страниц
4. Папка inc с подключаемыми файлами. Их три:
— файл подключения к базе данных
— Файл, который будет подключаться в нужном месте страницы для вывода счетчика на экран
— Основной скрипт, в котором прописана логика работы счетчика
5. Папка admin с файлом index.php. В этом файле мы сможем просмотреть статистику посещений сайта

Как что работает?

1. Создаем проект в Денвере (либо на реальном сервере)

Я создал в Денвере хост с именем statistic, а в папке www находятся все файлы сайта.

2. Создаем базу данных

Давайте перейдем к созданию базы, где у нас будет лежать вся информация. Назовем ее stats и создадим в ней две таблицы.

Если вы не хотите вручную создавать таблицы, то можете воспользоваться дампом базы (приложен в дополнительных материалах) и выполнить SQL-запрос на вкладке SQL после создания базы.

Итак, создаем первую таблицу. Назовем ее ips — в ней будут храниться идентификаторы IP-адресов и сами IP-адреса посетителей сайта.

В таблице будут 2 поля:

— id_id (int (12), первичный ключ, автоинкремент)- идентификатор IP-адреса;
— ip_address (varchar (50)) — сам IP-адрес посетителя.

Далее создаем вторую таблицу. Назовем ее visits — в ней будет храниться информация о посещениях сайта.

В таблице будут 4 поля:

visit_id (int (12), первичный ключ, автоинкремент) — идентификатор визита;
date (date) — дата визита;
hosts int(12) — количество хостов (уникальных посещений);
views int(12) — количество хитов (просмотров страниц).

В итоге база будет выглядеть вот так:

3. Базовые положения

Теперь, когда база данных создана, можно перейти к нескольким положениям, от которых мы будем отталкиваться при написании скрипта:

1. Определять уникального посетителя мы будем по IP-адресу. 1 IP-адрес равен 1 уникальному посетителю (хосту).

2. Заходы в течение 1 дня с одним и тем же IP-адресом не увеличивают количество уникальных посетителей в этот день.

3. Любой заход на сайт в течение суток увеличивает счетчик посещений (хитов) на 1 (вне зависимости от того, совершается ли он с уникального за сегодня IP-адреса или нет).

4. Начало суток мы будем определять следующим образом: когда человек заходит на сайт, мы будем делать проверку, существуют ли в таблице visits какие-либо записи за сегодняшнюю дату. Если нет, значит текущий посетитель является первым посетителем в данных сутках.

5. Раз в сутки идет очистка таблицы с IP-адресами для того, чтобы мы могли заносить в нее IP-адреса уже текущего дня и собирать статистику именно по сегодняшним посещениям сайта (делается это как раз по факту обнаружения того, что к нам пожаловал первый в текущих сутках посетитель).

4. Пишем файлы страниц сайта (index.php, contacts.php, about.php и uslugi.php)

Поскольку все 4 файла страниц сайта практически идентичны, мы рассмотрим только страницу index.php. Остальные три страницы (contacts.php, about.php и uslugi.php) отличаются только тэгами title и h2, в которых написаны другие названия страниц.

Итак, файл index.php:

В самом начале мы подключаем файл сount.php, который содержит всю логику работы счетчика.

Далее — подключение файла стилей и простая разметка. В блок div с идентификатором nav заключено меню, и в файле стилей как раз для него прописаны некоторые простые стили.

В нижей части, перед закрывающим тэгом body мы подключаем файл show_stats.php, в котором содержится сам код счетчика, т.е. в этом файле уже формируется непосредственно то, что мы будем выводить на экран.

Т.е. на каждой странице сайта у нас будет выводиться счетчик, и будет указано, сколько было за сегодня уникальных посетителей и просмотров. Этот файл мы разберем позже.

5. Пишем файл стилей (style.css)

Стили, как вы видите, очень простые. Мы задаем отступы, размер и гарнитуру шрифта, убираем подчеркивание для ссылок в меню и меняем цвет фона при наведении курсора мыши на элемент списка.

Кроме того, мы используем свойство display со значением inline для того, чтобы наше меню приняло горизонтальный, а не вертикальный вид.

6. Пишем файл .htaccess

На всякий случай создаем в корне сайта файл .htaccess с одной единственной директивой для задания кодировки UTF-8:

Данный шаг может оказаться излишним, если кодировка сервера уже была установлена в это значение.

7. Подключаемся к базе данных (db.php)

В файле db.php указаны параметры подключения к базе данных — хост, имя базы, логин и пароль.

Читать еще:  Поиск по базе данных mysql php

В этом же файле выполняется непосредственно соединение, а идентификатор соединения заносится в переменную $db. В случае ошибки выводится сообщение о невозможности подключиться к базе.

7. Пишем основной файл с логикой (count.php)

Ниже представлен его код, который мы вкратце разберем:

Итак, сначала мы подключаем файл bd.php, обеспечивающий связь с базой данных, после чего начинаем писать основной код.

Перво-наперво мы получаем из глобального массива $_SERVER IP-адрес посетителя и сохраняем текущую дату.

Дата нам необходима для того, чтобы проверить, были ли уже за сегодня какие-то посещения, или нет — это как раз наш следующий шаг.

Далее у нас возможно только 2 варианта: или посещений сегодня еще не было, или посещения сегодня уже были.

В первом случае (если посещений еще не было) и текущий посетитель является первым в этих сутках, мы производим очистку таблицы с IP-адресами.

Это нужно нам для того, чтобы начать сбор статистики уже именно за сегодняшний день.

Кроме того, мы заносим в базу IP-адрес текущего посетителя, а в базе данных для текущего дня проставляем в поля просмотров и уникальных посетителей по единице, т.к. это первый человек, принесший за сегодняшний день первый хит и первый хост.

Второй вариант — когда посещения сегодня уже были.

В этом случае мы проверяем, есть ли уже в базе IP-адрес, с которого происходит обращение, т.к. нам нужно учитывать лишь уникальные IP-адреса в пределах одних суток.

Если выясняется, что такой IP-адрес уже сегодня был, то мы к текущему значению просмотров добавляем +1 и больше ничего.

Если же такого IP-адреса сегодня еще не было (т.е. посетитель уникальный), то сохраняем в базу его IP и обновляем значения как количества уникальных посетителей, так и просмотров (т.е. увеличиваем на единицу значения обоих полей).

На этом файл count.php можно считать разобранным.

8. Пишем файл, выводящий счетчик на страницы (show_stats.php)

Файл show_stats.php мы используем на каждой из страниц для того, чтобы вывести статистическую информацию. Вот его код:

Как видите, этот файл намного проще.

Здесь мы просто получаем из базы статистику по текущей дате, после чего используем ключи результирующего массива $row для вывода на экран количества уникальных посетителей (поле host) и просмотров (поле views).

9. Создаем файл «админки» (index.php в папке admin)

В этом файле мы представим статистику посещений в табличном виде.

Кроме того, мы реализуем возможность получать статистику за определенный период времени. Ниже представлен код файла index.php:

Сначала соединяемся с базой. Затем формируем две ссылки с параметрами, которые позволят нам при клике по ним получать данные за определенный интервал времени (в примере: за 1 день и за 1 неделю).

Мы также проверяем глобальный массив $_GET на наличие передаваемого нами параметра (interval) и, в случае, если значение этого параметра не является числом, мы выводим соответствующее предупреждение.

Если же все нормально, то мы совершаем запрос к базе, извлекая из нее все записи, отсортированные по дате в обратном порядке в количестве штук, заданных в параметре interval.

После этого мы запускам цикл while и в нем формируем строки таблицы, выводя в их ячейки элементы результирующего массива $row (date, hosts и views), в результате чего получаем список всех посещений за указанный период времени.

Ну что ж, на этом разбор скрипта можно считать оконченным. При желании вы можете его модифицировать, заставив его, например, собирать больше статистических данных.

Если краткий текстовый обзор вам не до конца понятен, то изучите полную версию урока в видеоформате на этой странице выше.

Успехов вам, и до связи!

P.S. Хотите легко работать с PHP? Обратите внимание на премиум-уроки по различным аспектам сайтостроения, включая программирование на PHP, а также на бесплатный курс по созданию своей CMS-системы на PHP с нуля. Все это поможет вам быстрее и проще освоить этот мощный язык веб-разработки:

Понравился материал и хотите отблагодарить?
Просто поделитесь с друзьями и коллегами!

Счетчик php посещений, просмотров, скрипт

Сегодня по программе счетчик посещений на языке php. Сделаем несколько вариантов счетчиков на php! Простой счетчик — когда-то именно с такого счетчика начинал я! счетчик перезагрузок страницы без ограничений! И последний счетчик — он будет ограничен сессией!Скрипт счетчика очень простой! При загрузке страницы прибавить 1 , к уже имеющимся посещениям страницы!

Самый простой счетчик посещений на php

В последней строке выводим результат подсчета посещений файла.

Необходимые условия для счетчика посещаемости на php:

Для того, чтобы сделать счетчик посещений, то нам нужно иметь несколько позиций, без которых функционирование данного счетчика.

Логика скрипта подсчета зашедших пользователей

Папка для сохранения результатов подсчета посещений на php

Если вы даже примерно не представляете, как это сделать, то нам понадобится путь на сервере до путь до корневой

Для удобства лучше переменную _SERVER поместить в переменную $home(это просто удобнее)

Выведем echo $home;

Результат у вас будет точно будет другим.

Ну и собственно — далее вручную прописываем путь от корневой папки до той папки, где у вас будут храниться ваши файлы с количеством перезагрузок страницы. Чтобы не придумывать — возьмем наш замысловатый путь.

Не обязательно делать большими буквами — просто я это сделал еще при царе горохе — не стал переделывать!

Создание названия файла для счетчика php

О названии файла для счетчика засскажу отдельно!

Название файла должно быть уникальным – вы можете придумать свой алгоритм создания уникального названия вашего файла…

Я предлагаю использовать такой алгоритм – путь до файла от корневой папки будет уникальным! Если мы его пропустим через функцию md5 то получим уникальный идентификатор.
1. — получим адрес страницы, на которую зашел пользователь — здесь мы в подробностях разбирали этот процесс.

$parse_url = parse_url($_SERVER[«REQUEST_URI»], PHP_URL_PATH);

$real_page = $domen . $parse_url

Мы подготовили файл для записи количества посещений на странице.

Название файла + папка для счетчика

Ну и собственно — нам нужно соединить выше два идущих пункта, применительно к данной странице:

Получение результата количества посещаемости из файла

Выведем вот так:

Запись количества посещений на сайте

Запись количества посещений на сайте, ничем не отличается от первого пункта:

Сейчас обойдемся тремя строчками, чтобы было понятно!

1. В переменную получим адрес где записана посещаемость страницы:

Собака нужна для того, чтобы при первой загрузке не возникала ошибка, поскольку файла еще не существует!

Счетчик посещений на сайте в сборе

Теперь соберем весь счетчик полностью, как он у меня стоит на сайте.

Читать еще:  Php проверка условия

$parse_url = parse_url($_SERVER[«REQUEST_URI»], PHP_URL_PATH);

$real_page = $domen . $parse_url;

$url_looks = $home.»/ ВАШ_ПУТЬ_ДО_ПАПКИ/ «.md5($real_page).».dat»;

@file_put_contents($url_looks, ($count_looks + 1));

Счетчик PHP для подсчёта уникальных посетителей на сайте используем сессии

Чем отличается обычный счетчик посещений на сайте и счетчик, который считает уникальных посетителей!?

Что запись уникальных посещений — это запись в файл один н раз!

Для этого нам нужно запустить сессию, если она у вас не запущена.
Если $_SESSION[«count»] не существует, то записываем +1 и внутри присваиваем данной сессии единицу!

При следующей перезагрузке php dj внутрь уже не зайдет!

$parse_url = parse_url($_SERVER[«REQUEST_URI»], PHP_URL_PATH);

$real_page = $domen . $parse_url;

$url_looks = $home.»/ ВАШ_ПУТЬ_ДО_ПАПКИ/ «.md5($real_page).».dat»;

@file_put_contents($url_looks, ($count_looks + 1));

Старый вариант названия файла

Старый вариант, который на момент написания данной строки все еще существует на данном сайте. не знаю, когда дойдут руки.

$real_page = $_SERVER[«HTTP_X_FORWARDED_PROTO»].’://’.$_SERVER[«HTTP_HOST»] . parse_url(strip_tags($_SERVER[‘REQUEST_URI’]), PHP_URL_PATH);

$url_looks = $home.’/__a-data/__COUNT_FOR_FILE/’. str_replace($array_replace, «_», $real_page).’.html’ ;

В результате, мы получаем, такой адрес для записи количества просмотров:

Делюсь с вами как с друзьями!

Счетчик надо ставить в самом конце, всех проверок. как я сделал. весь php код срабатывает(до html). на все проверки, типы, виды страниц, и если не выдается $no_page записываем +1.
В единой точке входа, я немного рассказал о той структуре проверок php на существование страниц. схематично

Страница полностью переписана.

Друзья! Для всех кто не в курсе, то мы периодически возвращаемся к старым страницам и одна из таких страниц – это счетчик на PHP, и я его написал, наверно одним из первых кодов вообще!

И сейчас – это реально невозможно понять и прочитать! Поэтому весь старый контент в мусорку!

Полностью переписали данную страницу!

Вас может еще заинтересовать список тем : #PHP | #PHP_COUNT | #PHP_FILE | #PHP_BOOK |

НАШИ ПРОЕКТЫ : Проекты находятся в разной степени готовности (просто их столько, что времени не хватает…)

Статистика посещений на PHP

Пожалуй, одна из самых сложных, но в то же время обыденных, задач программиста является создание статистики посещений на PHP. В этой статье я покажу, как её можно сделать наиболее качественной.

Главная задача статистики посещений — это отличить одного пользователя от другого. Но как это сделать? К сожалению, это вообще невозможно. Если различать по IP, то ничего не выйдет. У огромного числа пользователей он динамический. Более того, у разных людей они повторяются. В итоге, 2 разных IP могут принадлежать одному человеку, а один и тот же IP может принадлежать разным людям.

Второй вариант — это отличать по cookie. Пожалуй, это лучший способ на данный момент. Безусловно, при смене браузера или очистки браузера от cookie, пользователь потеряется. Но другого выхода нет, поэтому лично я при статистике посещений на PHP всегда ключевым делаю именно cookie.

На основании этого давайте с Вами разберём, какая таблица в базе нам потребуется. Вот те поля, которые я считаю необходимы для хорошей статистики посещений на PHP:

  • id — уникальный идентификатор.
  • userhashcookie пользователя. Данное поле по сути и является ключевым при различении пользователей.
  • ipIP-адрес пользователя.
  • uri — страница, на которую пришёл посетитель. Например, /page.html.
  • ref — адрес, с которого пришёл посетитель.
  • date — дата посещения.

Теперь разберём PHP-код добавления в эту таблицу новой записи:

query(«INSERT INTO `visits` (`userhash`, `ip`, `uri`, `ref`, `date`) VALUES (‘$userhash’, ‘$ip’, ‘$uri’, ‘$ref’, ‘$date’)»); // Добавляем запись
$mysqli->close(); // Закрываем соединение
?>

Безусловно, данный код надо размещать на всех страницах сайта. И так же он может быть и изменён в зависимости от Вашего движка. Также можно добавлять и другие данные, например, браузер пользователя, ОС и прочее.

И, конечно, данная статистика посещений на PHP не идеальна, но не думаю, что есть лучше. А уж идеала точно нет. В любом случае, если Вам нужно отслеживать пользователя на длительном периоде, то лучше как можно быстрее зарегистрировать его на сайте, а уже дальше отслеживать все его действия по полученному id. И вот это уже будет идеальная статистика.

Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!

Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.

Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления

Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.

Порекомендуйте эту статью друзьям:

Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):

Она выглядит вот так:

  • BB-код ссылки для форумов (например, можете поставить её в подписи):
  • Комментарии ( 23 ):

    А так и нужно чтобы при каждом переходе по ссылкам на сайте появлялась новая запись, или нет?

    По мне так удобнее, просто обновлять ссылку и время, чтобы не загружать лишний раз базу данных, или дажу обновлять а ссылку добавлять через запятую а при выводе разбивать на массив и выводить в списке. А вам как такой вариант?

    Всё равно нужно при каждом посещении обновлять таблицу, хоть новую запись добавить, хоть через запятую новый адрес записать.

    Отлично,надо бы «похимичить» с этим кодом.

    Михаил, а можете сделать статью про создание графиков статистики по дате или количеству без сторонних библиотек, в виде дополнения к статье? Я очень прошу, просьба размером с голубого кита.

    Расскажу о создании графиков в PHP на основе данных, но это будет через 2-3 недели.

    Большое спасибо, будем с нетерпением ждать этой статьи, всё мы точно будет рады. Огромное спасибо, а когда будет статья про спойлер на js? Я вас просил написать и до сих пор жду

    Простой текстовый счетчик на PHP

    Начнем с создания самого простого текстового счетчика, который будет обсчитывать только одну страничку – ту, на которой он будет размещен. Но перед тем как переходить непосредственно к программированию, давайте остановимся на его алгоритме. В данном случае он очень простой, но, сформулировав его словами, нам будет проще понять, как работает код. Итак, алгоритм работы счетчика будет следующий:

    1. Прочитать текущее содержимое счетчика;
    2. Увеличить текущее содержимое счетчика на единицу;
    3. Сохранить обновленное содержимое счетчика;
    4. Вывести на печать обновленное значение счетчика.

    Теперь важный вопрос — где мы будем хранить значение счетчика? Т.к. страничка запрашивается разными людьми и с разных компьютеров, то хранить его мы можем только на сервере. В качестве хранилища может выступать либо файл, либо база данных. Работу с базой данных мы сейчас разбирать не будем, а остановимся на обычном текстовом файле, как наиболее подходящем варианте во многих случаях.

    Читать еще:  Not got report yes other html

    Я сразу приведу PHP-код, реализующий самый простой из всех возможных типов счетчика, а затем уже дам ряд комментариев.

    Как видите, скрипт достаточно прозрачный и практически полностью следует сформулированному ранее алгоритму. При этом, для удобства дальнейшей поддержки кода, я в первой же строке определил переменную $file_counter, которую уже и использую. Постарайтесь, по возможности, всегда определять переменные для всех более-менее важных исходных данных и не используйте их напрямую.

    Перед тем как читать значение счетчика из файла, я, при помощи функции file_exists(), проверяю — существует ли данный файл вообще? Если нет, то сразу же присваиваю счетчику нулевое значение. Если же файл существует, то читаем из него текущее значение счетчика. Для того чтобы прочитать содержимое файла, необходимо использовать следующую конструкцию:

    Для работы с файлами в PHP, как и во многих других языках программирования, предварительно необходимо открыть файл на чтение или запись. Для открытия файла используется функция fopen(), в качестве передаваемых ей параметров мы должны указать путь к файлу и способ доступа («r» — для чтения, «w» — для записи). В случае успешного открытия файла мы получаем его дескриптор, который далее и используется при любых операциях с файлом.

    На следующем шаге, используя функцию fread(), мы читаем содержимое файла. Т.к. у нас это очень простой счетчик, то все содержимое файла и является значением счетчика. Но для того чтобы прочитать содержимое файла, нам необходимо, кроме дескриптора файла, также указать и размер читаемых данных. В случае если файл небольшой, проще всего прочитать его в переменную целиком. А значит, нам необходимо предварительно узнать размер файла в байтах. Это делается при помощи функции filesize().

    После того как мы закончили работать с файлом, его необходимо закрыть, чтобы освободить ресурсы операционной системы. Для закрытия файла достаточно вызвать функцию fclose(), указав дескриптор файла в качестве параметра. После того как файл будет закрыт, дескриптор становится неопределенным и его больше использовать нельзя.

    Прочитав значение счетчика, его необходимо увеличить на единицу и сохранить обновленное значение в файле. При сохранении файла, точно так же, как и при открытии, необходимо вначале получить дескриптор файла, а уже затем делать с файлом какие-либо операции. В отличие от чтения, нам сейчас необходимо открыть файл на запись, указав режим доступа «w». При открытии файла в режиме записи он автоматически усекается до нулевой длины. Для сохранения строки в файле мы используем функцию fwrite(), передавая ей дескриптор файла и собственно значение переменной $counter в качестве параметров.

    Файл может отсутствовать при первом запуске скрипта, и в этом случае он будет создан автоматически — при первом же сохранении счетчика.

    Счётчик посещений

    Введение

    После создания сайта у меня возникла необходимость сделать учёт посещаемости. Надо сказать, что на хостинге и так стоит WebAlizer, который работает на стороне сервера и собирает довольно обширную статистику. Но и у него есть свои недостатки, самый главный — невозможность точно сказать, сколько человек действительно было на сайте и смотрело страницы. Суть проблемы заключается в том, что помимо пользователей есть ещё и различные программы, например, поисковые пауки или программы взлома, которые также запрашивают страницы сайта, но не отображают их пользователю. Ещё некоторые клиенты запрашивают файлы напрямую, что, в принципе, не является посещением самого сайта. В связи с этим появилось желание поставить обычный графический счётчик, который учитывает именно посетителей.

    Среди большого количества бесплатных счётчиков, которые предоставляют сервис статистики, я выбрал HotLog. Этот выбор был обусловлен тем, что HotLog, в общем, неплохой сервис и предоставляет то самое, чего не хватает WebAlizer. Их графический счётчик показывает общее число посещений и прибавку посетителей за текущий день.

    Однако, после некоторого времени использования счётчика, наблюдалась следующая ситуация — сервер статистики, который выдаёт картинку, был недоступен огромное количество времени. Это и понятно — бесплатный сервис работает по остаточному принципу. Но разница, которая была между хотлоговским счётчиком и WebAlizer, меня не устраивала. Так родилась идея написать очень простой и быстрый счётчик, который бы учитывал общее число посетителей, прибавку за день и количество посещённых страниц.

    Постановка задачи

    Разработать графический счётчик посещений, который бы учитывал общее количество посещений, прибавку посещений за день и количество просмотренных страниц.

    От постановки задачи уже можно перейти к условностям :-). Решение программных задач очень схоже с решением уравнений. Итак, пускай посетитель у нас будет хостом, просмотр страницы хитом. Пускай хостом будет считаться браузер, который не передал секретную куку (cookie — печенье), или в переданной куке содержится вчерашняя дата. Вообще, в куке будет храниться дата, когда она (кука) была установлена счётчиком. Это нужно, чтобы разделять посетителей по дням, то есть, если пользователь зашёл вчера и посетил 10 страниц, то должны насчитаться 1 хост и 10 хитов. Если этот же пользователь зашёл уже сегодня и посетил 5 страниц, то это 1 хост и 5 хитов. То есть, статистика пользователей должна быть посуточной. Хитом в этом случае будет считаться любое посещение пользователя.

    Для хранения статистики я выбрал обычный текстовый файл, где будет храниться всего одна строка. Это будет самый быстрый вариант хранения данных. Конечно, много информации так не сохранишь, но мне это и не требуется.

    Решение задачи

    Поскольку счётчик графический, то самое главное, что нельзя забывать, необходимо проверить доступность функций для работы с графикой. Эти функции не являются обязательными для PHP и зависят от библиотеки gd. Поэтому нужно всегда проверять, доступны ли они.

    Второй момент — графический фон счётчика. Всё-таки намного эстетичней, когда счётчик сам по себе не портит дизайн сайта и вписывается в него органично. Поэтому нужно предусмотреть два варианта, когда есть подложка и когда файл-подложка недоступен. Если файла с фоном нет, то его (фон) нужно нарисовать.

    И третье, что нужно учесть — блокировка файла на время обработки. Блокировать нужно на тот случай, если будет несколько обращений к файлу статистики одновременно. Если же файл не блокировать, то вполне вероятно, что будет ситуация, когда либо сам файл повредится, либо некоторые данные будут теряться.

    Помня обо всём этом, можно приступать к написанию скрипта.

    Ссылка на основную публикацию
    Adblock
    detector