Навигация
Главная
Поиск
Форум
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
Реклама
Сейчас на сайте
Гостей: 6
На сайте нет зарегистрированных пользователей

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

База данных студентов на Delphi + Microsoft SQL Server
Моделирование интернет кафе на GPSS + Отчет
Моделирование работы участка термической обработки шестерен на GPSS + По...

Изменение внешнего вида счетчика в 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 Комментариев · 6391 Прочтений · Для печати

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


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



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

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

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

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

Пароль



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

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

Случайные загрузки
С# для профессион...
Система баннеро-о...
CoolHints2k
Email
DragMe [Исходник ...
PDPcheck
Fig [Исходник на ...
MPTools
Geo-Whois
HtmlLerz PRO
Алгоритм DES шифр...
Srinilist
База каталогов ( ...
Delphi 2005 Учимс...
Page Promoter 7.7...
Карта сайта
Программирование ...
Prolog Interprete...
HTMLredaktor
Swat [Исходник на...

Топ загрузок
Приложение Клие... 100779
Delphi 7 Enterp... 97925
Converter AMR<-... 20283
GPSS World Stud... 17034
Borland C++Buil... 14206
Borland Delphi ... 10327
Turbo Pascal fo... 7380
Калькулятор [Ис... 6047
Visual Studio 2... 5213
Microsoft SQL S... 3666
Случайные статьи
SMB-подпись гарант...
Слоты Вулкана
Создание системы к...
Другие режимы базо...
Скорость передачи ...
Операции ввода/выв...
Настройки публикации
Формирование списк...
Планирование разве...
К головоломке "зеб...
Вторая причина
Диагностика пробле...
Что нужно для отпр...
Определение длины ...
Стандартные исключ...
Обзор на Казино Пи...
Функция GraphErrorMsg
Сортировка списка ...
HTTPS; третий позв...
3.2. АНТИПАТТЕРН: ...
Горилла официальны...
Правила наследования
Процедура итерацио...
ДОПУСТИМЫЕ СПОСОБЫ...
Игровой сервер ком...
Статистика



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


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