Этим Вы окажете большую помощь науке и медицине. См. подробнее: 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 года.
Добавить запись в гостевую книгу
Просмотреть гостевую книгу