Гостевая
Форум
Разделы
Главная страница
Js скрипты
Php скрипты
Html шаблоны
Книги по Web дизайну
Статьи


Главная страница статей --> Советы по фотошопу, графике и хитрости в построении php кода

Создание системы учета посещений

Источник: realcoding.net

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

Причин две. Во-первых, "внешняя" система статистики создают ощутимую задержку в загрузке страницы. Во-вторых, одному интересно узнать больше о графической системе пользователя, другому - о версиях браузера, а третьему - время проведенное пользователем на его сайте. Но, как оказывается, одна система дает инормацию о графической системе, вторая - о времени посещений, третья - вообще, не дает такой инормации, зато наиболее точно считает количество посетителей. Что делать? Вот и начинаем мы с вами ставить на страницу один, два, а потом и все пять счетчиков, после чего, время загрузки полезной информации составит не более 10% от времени загрузки сайта. Это приведет к тому, что посетитель плюнет и уйдет (интернет-то большой) или информации о нем не попадет в системы статистики. Вот тут-то мы и приходим к осознанию того, что система нужна своя.

Какие преимущества это дает? Во-первых, скорость загрузки. Цифры статистики можно вывести текстом, что не задержит загрузку, а обработка статистики будет производится на том же сервере, что и страница, что не внесет дополнительных задержек на установление связи с удаленным сервером. Во-вторых, такая система, изначально, будет соответствовать нашим запросам. Хотим - будем учитывать параметры графической системы пользователей, хотим - будем считать, сколько раз пришел за последние 15 секунд Вася Пупкин. В-третьих, так как такая система является неотъемлемой частью сайта, то не будет потеряно ни одного хита!

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

Для реализации подобной системы я использовал слудующее программное обеспечение:

Базы данных: mySQL
Скрипт: PHP
Вебсервер: Apache.

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

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

hits: Хранит подробную информацию о хитах за текущий день. Содержит следующие поля:

ИмяКомментарий
hostбуквенное имя домена пользователя
addrIP адрес пользователя
refererссылка, по которой пришел пользователь
pageна какую страницу сайта пришел пользователь
timestвремя хита.

hitsbypage: хранит инормацию за весь период по посещениям страниц сайта. Содержит следующие поля:

ИмяКомментарий
pageстраница
hitsколичество хитов
hostsколичество хостов

referers: хранит информацию о ссылках, по которым приходят на сайт. Содержит следующие поля:

ИмяКомментарий
hrefсобственно, ссылка
hitsколичество посещений с этой ссылки

hitsbydate: хранит информацию о хитах и хостах по дням. Содержит следующие поля:

ИмяКомментарий
dateдата
hitsколичество хитов
hostsколичество хостов

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

ПеременнаяЗначение
$REQUEST_URIадрес запрашиваемой страницы
$REMOTE_HOSTдомен пользователя (если установлен)
$REMOTE_ADDRIP адрес пользователя
$HTTP_REFERERСсылка, по которой пришел пользователь (если таковая была, т.е. пользователь не набрал адрес сайта в браузере или выбрал из списка избранных сайтов)

Теперь рассмотрим логику работы самой системы. Проверяем, не является ли значение поля $HTTP_REFERER новым (не содержится в таблице referers). Если новое, то добавляем его в нужную таблицу и устанавливаем количество хитов для него в 1. Если такая ссылка уже была, то, просто, увеличиваем количество хитов.

Аналогичным образом проверяем адрес запрашиваемой страницы.

Далее проверяем, были ли хиты сегодня. Если хитов небыло, значит, начался новый день и это первое посещение сегодня. Следовательно, удаляем все данные из таблицы hits, так как хранить всю информацию в ней нерентабельно. Затем вносим новую дату в таблицу hitsbydate и устанавливаем количество хитов и хостов для данной даты в 1. Если же новый день еще не наступил, то, проверив, не является ли IP адрес уникальным на сегодня, увеличиваем поля hits и hosts в таблице hitsbydate.

И, наконец, заносим информацию в таблицу hits.

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



Похожие статьи:
- Сколько человек на сайте?
- Безопасное программирование на PHP
- Генератор паролей
- Про тэги и метатэги
- CSS: советы и приёмы, часть 1
- Слежение за контентом на динамических сайтах
- Обработка строк в РНР
- Грамотная работа с файлами: исключительная блокировка файлов
- Таблицы и границы
- Списки a la MS Word
- Какой нужен сайт? (продолжение)
- Язык XML
- SEO-специалист делится своими секретами


Оглавление | Обсудить на форуме | Главная страница сайта | Карта сайта |
[0.001]