Евгений Кондратов (aka Udjin)
Возможности данного счетчика ограничиваются исключительно Вашим воображением. Все зависит только от структуры базы данных и логики самого счетчика.
К примеру. Вы хотите получить не только количество заходов, но и информацию о клиентском броузере, и времени захода.
Выбираем базу данных. Если сайт сильно загружен, то используется промашленные базы данных (MS SQL, Informix, Oracle), если слабо загружен - то Access.
Создаем таблицу со следующими полями:
Примечание: проектируя таблицы базы посторайтесь минимизировать траффик между Вашим приложением и базой данных, особенно траффик на запись.
Обратите внимание.
IdCounter - автоинкрементное поле, и будет автоматически заполняться, об этом позаботится енжин ADO, Request_Time также будет заполняться автоматически - для этого используется значение в поле "по умолчанию" Date(), возможно использование Now(), или GET DATE() для SQL-Server.
Сохраните таблицу как T_Counter и дайте своей базе какое - либо имя. В данном случае это не принципиально. Принципиально только место расположения базы данных - ВНЕ отображенных на IIS каталогов, в противном случае - назначьте в менеджемнт консоле премиссию на запись в каталог с базой данных.
Следующий шаг. Создадим Системный ресурс ODBC.
Назначим ресурсу ODBC осмысленное название (MyCounter). На этом работа с базой данных закончена.
Код счетчика.
Оформим его ввиде INC - файла, что позволит подключить счетчик к любому asp - файлу Вашего сайта. Код состоит из 2-х фрагментов. В первом фрагменте определяется броузер клиента и информация о нем добавляется в базу данных.
<% '-- Декларируем переменные -- Dim SQLString, strClient, intCount '-- Определяем броузер клиента и версию броузера -- Set bc = Server.CreateObject("MSWC.BrowserType") on error resume next strClient = bc.browser & " " & bc.version If strClient = EMPTY Then strClient = "no identy" Set bc = nothing '--Подключаемся к ODBС-- Set Conn = Server.CreateObject("ADODB.Connection") myDSN="DSN=MyCounter;uid="";pwd=""" Conn.open myDSN '--Текст запроса на вставку в базу данных-- SQLString = "INSERT INTO T_Counter(idClient) SELECT '" & strClient & "';" '-- Осуществляем запрос -- Conn.Execute(SQLString) IF Conn.errors.count> 0 THEN Response.write ("Ошибка в запросе!" & SQLString) '--Блок запроса к базе на выборку-- '--Открываем рекордсет-- Set RS = Server.CreateObject("ADODB.Recordset") RS.CursorType = adOpenStatic '--Формируем запрос-- SQLString = "SELECT Last(T_Counter.IdCounter) As LastCounter FROM T_Counter ;" RS.Open(SQLString), Conn '--присваиваем переменной значение-- intCount = RS("LastCounter") IF Conn.errors.count> 0 then Conn.Close Set Conn = nothing Response.write ("Ошибка в запросе!" & SQLString) else Conn.Close Set Conn = nothing End If %>
Код получения из базы результата счетчика.
В теле asp-страницы в соответствии с дизайном разместите код:
<% = intCount %>
Для подключения INC-файла используйте следующую конструкцию в ASP-файле:
<!-- #Include file="File_name.INC" -->
В дальнейшем будут рассмотрены счетчики-информеры.
<<< Назад