В данной статье будут рассмотрены варианты создания счетчиков для сайтов построенных на базе IIS 3, 4, 5, PWS, GoAhead. Для некоторых счетчиков - любой сервер поддерживающий работу со скрипт - машинами Windows с помощью различных расширений и модулей.(Chili-ASP, ActivePerl). При написании статьи использованы материалы с сайтов:
Примечание: данный материал рассчитан на начинающих скриптеров, по сему код максимально упрощен с целью облегчения восприятия. Код размещен по принципу от простого - к сложному
Классификация
По признаку своей функциональности счетчики можно подразделить на счетчики:
с накоплением
в рамках сессии
ементами персонификации
с возможностью дальнейшего анализа информации о клиенте
По способу хранения информации:
хранение в переменных сессии (приложения)
хранение в файле на стороне сервера
хранение в файле на стороне клиента
хранение в базе данных
комбинированные
По способу визуализации:
текстовые
графические
информеры (как комбинация первых двух)
Cчетчик от Microsoft
Возможности: счетчик с накоплением, поддержка виртуальных сайтов, отдельных asp-страниц.
Для создания данного счетчика необходимо с сайта Microsoft скачать серверный компонент PageCounter и установить его. Весь код счетчика оформлен в виде ISAPI-dll (распространяется вместе с исходными текстами) и число обращений к конкретной странице или инициалиазация/сброс счетчика вызываются как метод серверного объекта PageCounter.
Для установки счетчика на сервер необходимо скопировать PageCnt.dll в каталог \\InetPub\\ASPSamp\\Components\\PageCnt\\DLL\\i386 и зарегистрировать его: regsvr32 PageCnt.dll В случае, если Вы планируете подсчитывать обращения к нескольким виртуальным сайтам, Вам необходимо конфигурировать их как приложения.
Счетчик поддерживает 2 метода HITS и RESET
Код инициализации счетчика для конкретного сайта: Распологать его лучше всего в верхней части страницы, в первых строках.
<% Set MyPageCounter = Server.CreateObject("IISSample.PageCounter") HitMe = MyPageCounter.Hits %>
Отображение количества заходов: Данный фрагмент размещайте сообразуясь с дизайном своего сайта.
<% =HitMe %>
Для подсчета на конкретной странице сайта код несколько изменится:
<% Set MyPageCounter = Server.CreateObject("IISSample.PageCounter") %> This Web page has been viewed <%= MyPageCount.Hits %> times. <P> Page Myscript.asp has been viewed <%= MyPageCounter.Hits("/VirtualDir1/Myscript.asp") %> times.
Для того, чтобы запустить счетчик с какого-либо начального значения (12345) используйте следующий код:
<% =HitMe + 12345 %>
Сброс счетчика (RESET).
<% Set MyPageCounter = Server.CreateObject("IISSample.PageCounter") MyPageCounter.Reset MyPageCounter.Reset("/VirtualDir1/Mypage.asp") %>
Простейшиe счетчики
Возможности: счетчик с накоплением. Хранит информацию о количестве обращений в текстовом файле.
Используется объект VBScript (WSH) FileSystemObject.
Порядок действий
Создайте текстовый файл c:\\mycount.txt
Для инициализации счетчика укажите в текстовом файле начальное значение. На пример 0.
В тело вашей страницы впишите следующий код:
<% Декларирование переменных Const ForReading = 1, ForWriting = 2, ForAppending = 8 Dim fso, f, myCounter Создаем объект Set fso = CreateObject("Scripting.FileSystemObject") открываем файл на чтение, и считываем из него ВСЕ содержимое если файл отсутствует, то создаем его (Trye). Set f = fso.OpenTextFile("c:\\mycount.txt", ForReading, True) отключаем обработку ошибок On error resume next считываем содержимое, в случае пустого (Empty)значения присваиваем значение 0 переменной myCounter myCounter = f.readAll If myCounter = Empty Then myCounter = 0 если все в порядке, то увеличиваем значение переменной myCounter на 1 Else myCounter = myCounter + 1 End If открываем файл на запись и обновляем значение счетчика Set f = fso.OpenTextFile("c:\\mycount.txt", ForWriting, True) f.Write myCounter закрываем файл f.Close очищаем память Set f = nothing Set fso = nothing %>
В соответствии с дизайном разместите счетчик.
<% = myCounter %>
Счетчик с накоплением. Хранит данные в переменных сесии ( приложения ), отображает количество пользователей, находящихся в данный момент на сайте.
В рут - каталоге сайта создайте файл global.asa
Код:
<SCRIPT LANGUAGE=VBScript RUNAT=Server> SUB Session_OnStart Session.Timeout = 5 Application.lock Application("myCounter") = Application("myCounter") + 1 Application("visitors") = Application("visitors") + 1 Application.unlock END SUB </script> <SCRIPT LANGUAGE=VBScript RUNAT=Server> SUB Session_OnEnd Application.lock Application("visitors") = Application("visitors") - 1 Application.unlock END SUB </script>