Навигация
Главная
Поиск
Форум
FAQ's
Ссылки
Карта сайта
Чат программистов

Статьи
-Delphi
-C/C++
-Turbo Pascal
-Assembler
-Java/JS
-PHP
-Perl
-DHTML
-Prolog
-GPSS
-Сайтостроительство
-CMS: PHP Fusion
-Инвестирование

Файлы
-Для программистов
-Компонеты для Delphi
-Исходники на Delphi
-Исходники на C/C++
-Книги по Delphi
-Книги по С/С++
-Книги по JAVA/JS
-Книги по Basic/VB/.NET
-Книги по PHP/MySQL
-Книги по Assembler
-PHP Fusion MOD'ы
-by Kest
Professional Download System
Реклама
Услуги

Автоматическое добавление статей на сайты на Wordpress, Joomla, DLE
Заказать продвижение сайта
Программа для рисования блок-схем
Инженерный калькулятор онлайн
Таблица сложения онлайн
Популярные статьи
OpenGL и Delphi... 65535
Форум на вашем ... 65535
21 ошибка прогр... 65535
HACK F.A.Q 65535
Бип из системно... 65535
Гостевая книга ... 65535
Invision Power ... 65535
Пример работы с... 65535
Содержание сайт... 65535
ТЕХНОЛОГИИ ДОСТ... 65535
Организация зап... 65535
Вызов хранимых ... 65535
Создание отчето... 65535
Имитационное мо... 65535
Программируемая... 65535
Эмулятор микроп... 65535
Подключение Mic... 65535
Создание потоко... 65535
Приложение «Про... 65535
Оператор выбора... 65535
Реклама
Сейчас на сайте
Гостей: 48
На сайте нет зарегистрированных пользователей

Пользователей: 13,361
новичок: uehuat
Новости
Реклама
Выполняем курсовые и лабораторные по разным языкам программирования
Подробнее - курсовые и лабораторные на заказ
Delphi, Turbo Pascal, Assembler, C, C++, C#, Visual Basic, Java, GPSS, Prolog, 3D MAX, Компас 3D
Заказать программу для Windows Mobile, Symbian

Моделирование работы перекрёстка по регулированию движения на GPSS + Поя...
Компьютерный магазин на Turbo Pascal (База данных) + Пояснительная записка
Моделирование системы управления качеством производственного процесса на...

Изменение внешнего вида счетчика в CNStats
Источник: www.cnstats.com

Требования: CNStats 2.7 и выше. GD 1.0 и выше

При установке CNStats в разделе "Конфигурация - Код счетчика" Вам предлагается для размещения на сайте два типа кода:
обязательный код сбора статистики сайта - именно он считает посетителей сайта;
опциональный код отображения счетчика - этот код просто рисует картинку с цифрами посещений - графический счетчик.

Внешний вид счетчика который отображает текущие посещения сайта можно изменять. В данной статье рассматриваются варианты графического счетчика CNStats.

По умолчанию, счетчик CNStats выглядит следующим образом:


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

В конце заметки Вы можете посмотреть все виды рассматриваемых счетчиков и скачать их для использования.
Исходные данные

CNStats может предоставить следующую информацию для отображения на счетчике:
Хитов сегодня, вчера и всего;
Хостов сегодня, вчера и всего;
Пользователей сегодня, вчера и всего;
Пользователей сейчас на сайте.

Так как CNStats может учитывает посещения роботов, то можно вывести информацию и по ним:
Роботов сегодня, вчера и всего;
Процентное отношения роботы/пользователи.

Кроме того, можно сделать разнообразные счетчики графически отображающие динамику изменения посещаемости сайта.
Отображение счетчиков в CNStats

По умолчанию, скрипт, отображающий картинку счетчика находится в корневом каталоге CNStats и называется cnts.php (от англ. Counter-Show). Я рекомендую называть файлы ваших счетчиков подобным образом, например cnts-big.php, cnts-ttf.php и т.п.

Начнем написание кода с некоторой, стандартной "рыбы", которую должен содержать код любого счетчика CNStats:
error_reporting(E_ALL & ~E_NOTICE);

// Подключаемся к конфигурационному файлу.
include "config.php";

// Создаем изображения, из заранее заданного шаблона.
$im=ImageCreateFromPng("button.png");

// Соединяемся с MySql сервером.
$CONN=@mysql_connect($STATS_CONF["sqlhost"],
$STATS_CONF["sqluser"],
$STATS_CONF["sqlpassword"]);
if (mysql_errno()==0) {

// Выбираем базу данных
@mysql_select_db($STATS_CONF["dbname"]);

if (mysql_errno()==0) {
// .. тут выполняются все необходимые действия
// по созданию изображения ...
}
}

// Отправляем HTTP заголовок Content-Type
Header("Content-type: image/png");

// Генерируем изображения
ImagePng($im);

// Очищаем память
ImageDestroy($im);
?>

Далее этот код будет вставляться без комментариев.
Счетчик №1 - стандартный



error_reporting(E_ALL & ~E_NOTICE);
include "config.php";

$im=ImageCreateFromPng("button.png");
$CONN=@mysql_connect($STATS_CONF["sqlhost"],
$STATS_CONF["sqluser"],
$STATS_CONF["sqlpassword"]);
if (mysql_errno()==0) {
@mysql_select_db($STATS_CONF["dbname"]);

if (mysql_errno()==0) {

// Выбираем данные
// t_hits - хитов всего
// hits - хитов сегодня
// hosts - хостов сегодня
$r=@mysql_query("SELECT t_hits,hits,hosts FROM cns_counter");

// Переносим единственную выбранную запись в ассоциативный массив
$res=@mysql_fetch_array($r,MYSQL_ASSOC);

// Освобождаем память
@mysql_free_result($r);

// Выделям необходимые цвета
$black=ImageColorAllocate($im,0,0,0);
$color=ImageColorAllocate($im,$COUNTER["inkR"],
$COUNTER["inkG"],
$COUNTER["inkB"]);

// Выводим числа
ImageString($im,2,86-6*strlen($res["t_hits"]),1,$res["t_hits"],$color);
ImageString($im,1,85-5*strlen($res["hits"]),13,$res["hits"],$color);
ImageString($im,1,85-5*strlen($res["hosts"]),20,$res["hosts"],$color);
}
}

Header("Content-type: image/png");
ImagePng($im);
ImageDestroy($im);
?>

Самая интересная часть этого кода - это SQL запрос, которые выбирает отображаемые данные из таблицы:
SELECT t_hits,hits,hosts FROM cns_counter

Рассмотрим, что еще мы можем "вытащить" из таблиц CNStats, так, чтобы это практически не нагружало сервер.
SELECT hits, hosts, users,
t_hits, t_hosts, t_users,
u_hits, u_hosts,
u_t_hits, u_t_hosts
FROM cns_counter;

Здесь:
hits - хитов сегодня
hosts - хостов сегодня
users - пользователей сегодня
t_hits - хитов всего
t_hosts - хостов всего
t_users - пользователей всего
u_hits - хитов от посетителей за сегодня (исключены роботы)
u_hosts - хостов от посетителей за сегодня (исключены роботы)
u_t_hits - хитов от посетителей всего (исключены роботы)
u_t_hosts - хостов от посетителей всего (исключены роботы)
u_hits-hits - хитов от роботов за сегодня
u_hosts-hosts - хостов от роботов за сегодня
u_t_hits-t_hits - хитов от роботов всего
u_t_hosts-t_hosts - хостов от роботов всего

Помните! Роботы учитываются только при использовании "PHP-Include" и "комбинированного" счетчиков.

Ниже приведен запрос, который получает количество посетителей в данные момент находящихся на сайте (условно).
SELECT count(DISTINCT hid) as online
FROM cns_log
WHERE date>NOW() - INTERVAL 3 MINUTE;
Счетчик №2 - хитов всего, хитов сегодня, пользователей сегодня и сейчас на сайте




Как вы видите из изображения счетчика, здесь мы использовали другое базовое изображение, для того что бы уместить цифру "сейчас на сайте". (красным цветом)
error_reporting(E_ALL & ~E_NOTICE);
include "config.php";

$im=ImageCreateFromPng("button-tt.png");
$CONN=@mysql_connect($STATS_CONF["sqlhost"],
$STATS_CONF["sqluser"],
$STATS_CONF["sqlpassword"]);
if (mysql_errno()==0) {
@mysql_select_db($STATS_CONF["dbname"]);

if (mysql_errno()==0) {

// Выбираем данные
// t_hits - хитов всего
// hits - хитов сегодня
// users - пользователей сегодня
$r=@mysql_query("SELECT t_hits,hits,users FROM cns_counter");

// Переносим единственную выбранную запись в ассоциативный массив
$res=@mysql_fetch_array($r,MYSQL_ASSOC);

// Освобождаем память
@mysql_free_result($r);

// Выделяем необходимые цвета
$black=ImageColorAllocate($im,0,0,0);
$red=ImageColorAllocate($im,255,0,0);

// Выводим числа
ImageString($im,2,3,1,$res["t_hits"],$black);
ImageString($im,1,3,13,$res["hits"],$black);
ImageString($im,1,3,20,$res["users"],$black);

// Выбираем "сейчас на сайте"
$r=@mysql_query("SELECT count(DISTINCT hid) as online
FROM cns_log
WHERE date>NOW() - INTERVAL 3 MINUTE;");

$text=@mysql_result($r,0,0);
@mysql_free_result($r);
// Выводим "сейчас на сайте"
ImageString($im,1,80-5*strlen($text),4,$text,$red);
}
}

Header("Content-type: image/png");
ImagePng($im);
ImageDestroy($im);
?>
Счетчик №3 - использование True-Type шрифтов при генерации счетчиков



К сожалению, из-за того, что поддержка TrueType шрифтов установлена далеко не на всех серверах, такой счетчик не включается в дистрибутив. Жаль, очень красивый счетчик

На этом счетчике, для разнообразия, мы вывели хитов сегодня, хостов сегодня и пользователей сегодня.
error_reporting(E_ALL & ~E_NOTICE);
include "config.php";

// Эта функция позволяет определить длину строки в пикселях
function width($text) {
$box=imagettfbbox(7, 0, FONT_TAHOMA, $text);
return($box[2]-$box[1]);
}

// Шрифт, который мы используем для вывода счетчика.
// Можно взять из C:\Windows\Fonts
define('FONT_TAHOMA', 'tahoma.ttf');

// Внимание ! Изображение должно быть True-Color (24 бита)
$im=ImageCreateFromPng("button-tt.png");
$CONN=@mysql_connect($STATS_CONF["sqlhost"],
$STATS_CONF["sqluser"],
$STATS_CONF["sqlpassword"]);

if (mysql_errno()==0) {
@mysql_select_db($STATS_CONF["dbname"]);

if (mysql_errno()==0) {

// Выбираем данные
// hits - хитов сегодня
// hosts - хостов сегодня
// users - пользователей сегодня
$r=@mysql_query("SELECT hits,hosts,users FROM cns_counter");

// Переносим единственную выбранную запись в ассоциативный массив
$res=@mysql_fetch_array($r,MYSQL_ASSOC);

// Освобождаем память
@mysql_free_result($r);

// Выводим текст
$text = $res["hits"];
Imagettftext($im,7, 0, 4, 10, 0x03314A, FONT_TAHOMA, $text);

$text = $res["hosts"];
Imagettftext($im,7, 0, 4, 19, 0x03314A, FONT_TAHOMA, $text);

$text = $res["users"];
Imagettftext($im,7, 0, 4, 28, 0x03814A, FONT_TAHOMA, $text);

$r=mysql_query("SELECT count(DISTINCT hid) as online
FROM cns_log
WHERE date>NOW() - INTERVAL 10 MINUTE;");
$text = mysql_result($r,0,0);
Imagettftext($im,7, 0, 80-width($text), 12, 0xC0314A, FONT_TAHOMA, $text);
}
}

ImagePng($im);
ImageDestroy($im);
?>
Счетчик №4 - хитов всего, хитов сегодня, пользователей сегодня, процент роботов



В этом примере, помимо роботов мы немного изменим внешний вид счетчика - добавим тени, и с помощью отступов сделаем числа более удобочитаемыми.
error_reporting(E_ALL & ~E_NOTICE);
include "config.php";

// Эта функция позволяет определить длину строки в пикселях
function width($text) {
$box=imagettfbbox(7, 0, FONT_TAHOMA, $text);
return($box[2]-$box[1]);
}

// Шрифт, который мы используем для вывода счетчика.
// Можно взять из C:\Windows\Fonts
define('FONT_TAHOMA', 'tahoma.ttf');

// Внимание ! Изображение должно быть True-Color (24 бита)
$im=ImageCreateFromPng("button-tt.png");

$CONN=@mysql_connect($STATS_CONF["sqlhost"],
$STATS_CONF["sqluser"],
$STATS_CONF["sqlpassword"]);

if (mysql_errno()==0) {
@mysql_select_db($STATS_CONF["dbname"]);

if (mysql_errno()==0) {

// Выбираем данные
// t_hits - хитов всего
// hits - хитов сегодня
// users - пользователей сегодня
// u_hits - хитов от посетителей
$r=@mysql_query("SELECT t_hits,hits,users, u_hits FROM cns_counter");

// Переносим единственную выбранную запись в ассоциативный массив
$res=@mysql_fetch_array($r,MYSQL_ASSOC);

// Освобождаем память
@mysql_free_result($r);

// Выводим текст
$text = number_format($res["t_hits"],0,","," ");
Imagettftext($im,7, 0, 5, 11, 0xCCCCCC, FONT_TAHOMA, $text);
Imagettftext($im,7, 0, 4, 10, 0x03314A, FONT_TAHOMA, $text);

$text = number_format($res["hits"],0,","," ");
Imagettftext($im,7, 0, 5, 20, 0xCCCCCC, FONT_TAHOMA, $text);
Imagettftext($im,7, 0, 4, 19, 0x04476C, FONT_TAHOMA, $text);

$text = number_format($res["users"],0,","," ");
Imagettftext($im,7, 0, 5, 29, 0xcccccc, FONT_TAHOMA, $text);
Imagettftext($im,7, 0, 4, 28, 0x04876C, FONT_TAHOMA, $text);

// Рассчитываем процентное отношение роботов
if ($res["hits"]!=0)
$text = intval((1-$res["u_hits"]/$res["hits"])*100)."%";
else
$text="0";

// Выводим текст
Imagettftext($im,7, 0, 80-width($text), 12, 0xCCCCCC, FONT_TAHOMA, $text);
Imagettftext($im,7, 0, 79-width($text), 11, 0x03804A, FONT_TAHOMA, $text);
}
}

ImagePng($im);
ImageDestroy($im);
?>
Счетчик №5 - все вместе



Этот большой счетчик является суммой всех предыдущих.
error_reporting(E_ALL & ~E_NOTICE);
include "config.php";

// Эта функция позволяет определить длину строки в пикселях
function width($text) {
$box=imagettfbbox(7, 0, FONT_TAHOMA, $text);
return($box[2]-$box[1]);
}

// Шрифт, который мы используем для вывода счетчика.
// Можно взять из C:\Windows\Fonts
define('FONT_TAHOMA', 'tahoma.ttf');

// Внимание ! Изображение должно быть True-Color (24 бита)
$im=ImageCreateFromPng("button-big.png");

$CONN=@mysql_connect($STATS_CONF["sqlhost"],
$STATS_CONF["sqluser"],
$STATS_CONFs["sqlpassword"]);

if (mysql_errno()==0) {
@mysql_select_db($STATS_CONF["dbname"]);

if (mysql_errno()==0) {

$r=@mysql_query("SELECT t_hits,t_hosts,t_users,hits,hosts,
users,u_hits FROM cns_counter");
$res=@mysql_fetch_array($r,MYSQL_ASSOC);
@mysql_free_result($r);

$text = number_format($res["t_hits"],0,","," ");
Imagettftext($im,7, 0, 86-width($text), 11, 0xCCCCCC, FONT_TAHOMA, $text);
Imagettftext($im,7, 0, 85-width($text), 10, 0x03314A, FONT_TAHOMA, $text);

$text = number_format($res["hits"],0,","," ");
Imagettftext($im,7, 0, 86-width($text), 20, 0xCCCCCC, FONT_TAHOMA, $text);
Imagettftext($im,7, 0, 85-width($text), 19, 0x0331FF, FONT_TAHOMA, $text);

$text = number_format($res["t_hosts"],0,","," ");
Imagettftext($im,7, 0, 86-width($text), 31, 0xCCCCCC, FONT_TAHOMA, $text);
Imagettftext($im,7, 0, 85-width($text), 30, 0x03314A, FONT_TAHOMA, $text);

$text = number_format($res["hosts"],0,","," ");
Imagettftext($im,7, 0, 86-width($text), 40, 0xCCCCCC, FONT_TAHOMA, $text);
Imagettftext($im,7, 0, 85-width($text), 39, 0x0331FF, FONT_TAHOMA, $text);

$text = number_format($res["t_users"],0,","," ");
Imagettftext($im,7, 0, 86-width($text), 51, 0xCCCCCC, FONT_TAHOMA, $text);
Imagettftext($im,7, 0, 85-width($text), 50, 0x03314A, FONT_TAHOMA, $text);

$text = number_format($res["users"],0,","," ");
Imagettftext($im,7, 0, 86-width($text), 60, 0xCCCCCC, FONT_TAHOMA, $text);
Imagettftext($im,7, 0, 85-width($text), 59, 0x0331FF, FONT_TAHOMA, $text);

$r=mysql_query("SELECT count(DISTINCT hid) as online
FROM cns_log
WHERE date>NOW() - INTERVAL 3 MINUTE;");
$text = mysql_result($r,0,0);
Imagettftext($im,7, 0, 86-width($text), 70, 0xCCCCCC, FONT_TAHOMA, $text);
Imagettftext($im,7, 0, 85-width($text), 69, 0xC0314A, FONT_TAHOMA, $text);

$text = sprintf("%.2f%%",(1-$res["u_hits"]/$res["hits"])*100);
Imagettftext($im,7, 0, 86-width($text), 82, 0xCCCCCC, FONT_TAHOMA, $text);
Imagettftext($im,7, 0, 85-width($text), 81, 0x03804A, FONT_TAHOMA, $text);
}
}
ImagePng($im);
ImageDestroy($im);
?>
Скачать
Пример Ссылка Системные требования
Скачать GD, поддержка PNG
Скачать GD, поддержка PNG
Скачать GD 2.0+, поддержка PNG, поддержка TrueType
Скачать GD 2.0+, поддержка PNG, поддержка TrueType
Скачать GD 2.0+, поддержка PNG, поддержка TrueType


Если Вы в чем-то не разобрались, или хотите поделится интересным советом - пишите. Мы будем рады ответить на любые ваши вопросы
Опубликовал Kest November 06 2008 16:39:30 · 0 Комментариев · 5998 Прочтений · Для печати

• Не нашли ответ на свой вопрос? Тогда задайте вопрос в комментариях или на форуме! •


Комментарии
Нет комментариев.
Добавить комментарий
Имя:



smiley smiley smiley smiley smiley smiley smiley smiley smiley
Запретить смайлики в комментариях

Введите проверочный код:* =
Рейтинги
Рейтинг доступен только для пользователей.

Пожалуйста, залогиньтесь или зарегистрируйтесь для голосования.

Нет данных для оценки.
Гость
Имя

Пароль



Вы не зарегистрированны?
Нажмите здесь для регистрации.

Забыли пароль?
Запросите новый здесь.
Поделиться ссылкой
Фолловь меня в Твиттере! • Смотрите канал о путешествияхКак приготовить мидии в тайланде?
Загрузки
Новые загрузки
iChat v.7.0 Final...
iComm v.6.1 - выв...
Visual Studio 200...
CodeGear RAD Stud...
Шаблон для новост...

Случайные загрузки
Visual Basic for ...
Применение фильтр...
PHP/MySQL для нач...
SODA [Исходник на...
Fig [Исходник на ...
VFW
Программирование ...
PRNDbgrid
Microsoft SQL Ser...
начисление процен...
FatScrollbar
Crypt32
EMSQuickImport
Панель поиска
Image Browser [Ис...
Пример создания W...
Delphi 7 Enterpri...
Секреты программи...
Популярные загрузки
Фундаментальные а...

Топ загрузок
Приложение Клие... 100772
Delphi 7 Enterp... 97809
Converter AMR<-... 20261
GPSS World Stud... 17014
Borland C++Buil... 14189
Borland Delphi ... 10267
Turbo Pascal fo... 7372
Калькулятор [Ис... 5972
Visual Studio 2... 5206
Microsoft SQL S... 3661
Случайные статьи
Непроизводительные...
Печать документа
Сверточные (рекурр...
Облицовочный камен...
Установка подсветк...
Программная выписк...
PNG
Задачи привратника...
Выделение структур...
Функция проверяюща...
Поиск в Яндексе
Набор команд объек...
Как получить текст...
Подключенные и лок...
Четкое разграничен...
дня использовать в...
Листинг 2.13, 2.14
Протокол SNMP
Язык С и С++: массивы
Отношения между уч...
Контроль состава а...
Тестирование, поис...
Служба имен доменов
УСТРОЙСТВА В GPSS
Настройка событий ...
Статистика



Друзья сайта
Программы, игры


  • вывод из запоя орел читать
  • alkodoctor24.ru
Полезно
В какую объединенную сеть входит классовая сеть? Суммирование маршрутов Занимают ли таблицы память маршрутизатора?