Подключите Ваш компьютер к проекту распределённых вычислений!
Этим Вы окажете большую помощь науке и медицине.
См. подробнее: http://solidstate.karelia.ru/~yura/pyldin/yura/computing.htm


Как установить счётчик посещений на Web страницу
 

На этой странице рассказано, как организовать ведение статистики посещений на Вашем Web сервере, как сделать самому счётчик посещений, организовать базу данных, в которую будут записываться данные о каждом посещении страницы, на которой стоит счётчик, а также просмотр этих записей в удобном сгруппированном виде. Этот материал может пригодиться и быть полезен студентам, так как это очень часто в качестве курсовой работы даются темы, связанные с анализом посещаемости сайтов, Web страниц и аналогичные. Ниже будут рассмотрены два случая, первый про организацию учёта посетителей на сервере с системой Linux и связкой PHP + MySQL. А второй случай - про организацию учёта посетителей на сервере с системой Windows и связкой ASP + база данных MS Access в качестве ODBC источника данных.


Часть 1.
Организация учёта посетителей для сервера
с системой Linux. Счётчик написан на PHP.
В качестве хранилища данных о посещениях
используется база данных MySQL.

Для работы системы учёта посещений в системе Linux помимо Web сервера Apache должны быть установлены PHP и MySQL. Система разрабатывалась и тестировалась в Linux, хотя под Windows (IIS + PHP + MySQL) тоже должно всё нормально работать. Сначала нужно в MySQL создать базу данных webcount. В базе данных надо создать три таблицы. Первая с именем counters. Структура таблицы counters такова:

+-----------------+------------------+------+-----+---------+
| Field           | Type             | Null | Key | Default |
+-----------------+------------------+------+-----+---------+
| counter_id      | int(10) unsigned |      |     | 0       |
| ip_info         | varchar(255)     | YES  |     | NULL    |
| date            | datetime         | YES  |     | NULL    |
| p1remotehost    | varchar(255)     | YES  |     | NULL    |
| p1httpuseragent | varchar(255)     | YES  |     | NULL    |
| p1httprefer     | varchar(255)     | YES  |     | NULL    |
| p1language      | varchar(255)     | YES  |     | NULL    |
| p1httpxforward  | varchar(255)     | YES  |     | NULL    |
| p1httpvia       | varchar(255)     | YES  |     | NULL    |
| forw2dns        | varchar(255)     | YES  |     | NULL    |
| namecountry     | varchar(100)     | YES  |     | NULL    |
+-----------------+------------------+------+-----+---------+

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

+------------+---------------------+------+-----+---------+
| Field      | Type                | Null | Key | Default |
+------------+---------------------+------+-----+---------+
| counter_id | int(10) unsigned    |      | PRI | 0       |
| value      | bigint(20) unsigned |      |     | 0       |
+------------+---------------------+------+-----+---------+

В ней будут храниться данные о количестве посещений для каждого счётчика. Третья таблица - country_info со следующей структурой:

+---------------+-------------+------+-----+---------+
| Field         | Type        | Null | Key | Default |
+---------------+-------------+------+-----+---------+
| ip_from       | double      | YES  |     | NULL    |
| ip_to         | double      | YES  |     | NULL    |
| country_code2 | char(2)     | YES  |     | NULL    |
| country_code3 | char(3)     | YES  |     | NULL    |
| country_name  | varchar(50) | YES  |     | NULL    |
+---------------+-------------+------+-----+---------+

В неё надо будет загрузить данные о распределении IP-адресов по странам. Легче всего это сделать, установив Mysql ODBC driver на соседнем компьютере под управлением Windows (далее создать ODBC и через Access передать данные на Linux сервер). На Linux-сервере должен быть открыт порт 3306, чтобы Mysql ODBC driver мог бы подключиться. Ну а сама база берётся с сайта http://inethub.olvi.net.ua/ftp/db/maxmind.com/ip-to-country.zip .
 

Архив php-counter.zip - в этом архиве находятся следующие файлы:

index.php - заготовка главной страницы сервера, на которой будет располагаться счётчик.
stat.php - скрипт, выводящий отчёт о посетителях сервера.
country_update.php - скрипт, позволяющий исправить данные в базе посетителей по странам (дело в том, что со временем данные в базе с сайта ip-to-country.directi.com обновляются и пополняются, и применение этого скрипта после обновления базы делает более точными данные, из каких стран были посетители).
stat_full.php - вспомогательный скрипт для тестовых целей, который выводит более полную (не сгруппированную) статистику о посетителях.

Во всех скриптах нужно в строчку $db_pass = "******"; вместо звёздочек поставить Ваш (webmaster) пароль для доступа к MySQL базе webcount.

Также в скриптах сделано, чтобы внутренние IP адреса (10.0.0.0/8, 172.16.0.0/12 и 192.168.0.0/16) определялись как принадлежащие России. Для этого в строчке
if (substr($pre_dot,0,8)=="169.254." || substr($pre_dot,0,8)=="192.168." || substr($pre_dot,0,7)=="172.16." || substr($pre_dot,0,7)=="172.17." || substr($pre_dot,0,7)=="172.18." || substr($pre_dot,0,7)=="172.19." || substr($pre_dot,0,7)=="172.20." || substr($pre_dot,0,7)=="172.21." || substr($pre_dot,0,7)=="172.22." || substr($pre_dot,0,7)=="172.23." || substr($pre_dot,0,7)=="172.24." || substr($pre_dot,0,7)=="172.25." || substr($pre_dot,0,7)=="172.26." || substr($pre_dot,0,7)=="172.27." || substr($pre_dot,0,7)=="172.28." || substr($pre_dot,0,7)=="172.29." || substr($pre_dot,0,7)=="172.30." || substr($pre_dot,0,7)=="172.31." || substr($pre_dot,0,4)=="127." || substr($pre_dot,0,3)=="10.") $pre_dot = "194.85.173.173";
поставлен заведомо Российский IP-адрес. Если Ваш сервер находится в другой стране, то подставьте вместо 194.85.173.173 какой-нибудь IP-адрес, принадлежащий Вашей стране, и скрипт будет определять локальные IP-адреса, как принадлежащий Вашей стране.

В базу можно заносить данные о нескольких счётчиках, изменив в скрипте $a1 = 1; Это может потребоваться, если у Вас на сервере несколько виртуальных серверов или Вы хотите о разных страницах одного сервера вести отдельную статистику. В общем файл index.php из архива (заготовка главной страницы сервера) небольшой и устроен несложно, так что Вы легко можете разобраться в нём и поставить счётчик на Ваш сервер.

Как работает этот счётчик на практике, Вы можете посмотреть по адресу: http://localbudget.karelia.ru/stat.shtml



Часть 2.
Организация учёта посетителей для сервера с
системой Windows. Счётчик написан на ASP.
В качестве хранилища данных о посещениях используется
база данных MS Access (соответствующий драйвер ODBC).

А следующая версия системы учёта посетителей рассчитана на ОС Windows и сервер IIS (на нём включена поддержка ASP страниц). Также необходимо на сервер установить программу "ASPDNS COM Component" - её можно найти по адресу: http://www.internext.co.za/stefan/aspdns/aspdns.zip (она нужна для определения имени хоста по IP адресу).

В Пуск - Панель управления - Администрирование - Источники данных (ODBC) на сервере надо создать на вкладке "Системный DSN" два источника данных. Один (с именем webcount) - для хранения данных о каждом посещении и значений счётчиков, а другой (с именем ip2country) - для хранения данных о распределении IP-адресов по странам. В размещённом на этой странице архиве прилагаются уже готовые оба MDB-файла для создания DSN, потому описывать поля нет особого смысла.

Архив asp-counter.zip - в этом архиве находятся следующие файлы:

index.asp - заготовка главной страницы сервера, на которой будет располагаться счётчик
stat.asp - скрипт, выводящий отчёт о посетителях сервера
webcount.mdb - заготовка базы данных для счётчиков и статистики посещений Web сервера
ip2country.mdb - заготовка базы данных для определения страны по IP-адресу

Как и в прошлом случае, надо будет загрузить данные о распределении IP адресов по странам в базу ip2country.mdb. Эта база берётся с сайта http://inethub.olvi.net.ua/ftp/db/maxmind.com/ip-to-country.zip .

Чтобы нормально производилась запись данных о посетителях в базу данных, надо на каталог, где находится файл webcount.mdb поставить разрешение для группы "Гости" на чтение и запись.

В скриптах сделано, чтобы внутренние IP адреса (10.0.0.0/8, 172.16.0.0/12 и 192.168.0.0/16) определялись как принадлежащие России. Для этого в строчке
if (pre_dot.substr(0,8)=="192.168." || pre_dot.substr(0,8)=="169.254." || pre_dot.substr(0,7)=="172.16." || pre_dot.substr(0,7)=="172.17." || pre_dot.substr(0,7)=="172.18." || pre_dot.substr(0,7)=="172.19." || pre_dot.substr(0,7)=="172.20." || pre_dot.substr(0,7)=="172.21." || pre_dot.substr(0,7)=="172.22." || pre_dot.substr(0,7)=="172.23." || pre_dot.substr(0,7)=="172.24." || pre_dot.substr(0,7)=="172.25." || pre_dot.substr(0,7)=="172.26." || pre_dot.substr(0,7)=="172.27." || pre_dot.substr(0,7)=="172.28." || pre_dot.substr(0,7)=="172.29." || pre_dot.substr(0,7)=="172.30." || pre_dot.substr(0,7)=="172.31." || pre_dot.substr(0,4)=="127." || pre_dot.substr(0,3)=="10.") pre_dot = "194.85.173.173";
поставлен заведомо Российский IP-адрес. Если Ваш сервер находится в другой стране, то подставьте вместо 194.85.173.173 какой-нибудь IP-адрес, принадлежащий Вашей стране, и скрипт будет определять локальные IP-адреса, как принадлежащий Вашей стране.

В базу можно заносить данные о нескольких счётчиках, изменив в скрипте var a1=1; Это может потребоваться, если у Вас на сервере несколько виртуальных серверов или Вы хотите о разных страницах одного сервера вести отдельную статистику. В общем файл index.asp из архива (заготовка главной страницы сервера) небольшой и устроен несложно, так что Вы легко можете разобраться в нём и поставить счётчик на Ваш сервер.

Счётчик в работе, к сожалению, не посмотреть (раньше он долго и успешно работал на сервере dssplab.karelia.ru, но теперь счётчик убран оттуда, т.к. сервер стал использоваться для других целей), но Вы можете посмотреть файл final_statistic.htm - это пример отчёта, который генерирует скрипт stat.asp.
 

В архиве asp-counter-no-countries.zip находится более упрощенная версия той же системы учёта посещений, из которой исключено определение, из какой страны посетитель. Дело было в том, что в случае просмотра ASP скриптов из ранних версий Netscape Navigator через прокси-сервер возникала ошибка в строке strana = String(rs2.fields.item("country_name")); и эту ошибку никак никому не удавалось устранить. В этой версии соответствующие строки закомментированы, поставлено strana = "RUSSIAN FEDERATION"; DSN ip2country в данном случае организовывать не нужно. Причина, почему возникала ошибка в строке strana = String(rs2.fields.item("country_name")); при просмотре через прокси-сервер из старых версий Netscape Navigator - пока неизвестна.


Эта WEB-страничка последний раз изменялась 29 августа 2007 года.

Добавить запись в гостевую книгу
Просмотреть гостевую книгу


< < < Вернуться на главную страничку < < <