myDC.ru

Здравствуйте, гость ( Вход | Регистрация )

 

> Webstats, API2 | Веб-статистика для хаба

Рейтинг 5 V
PomanoB
сообщение 14.7.2009, 17:15
Сообщение #421


AmxModx Scripter
*****

Группа: Пользователи
Сообщений: 302
Регистрация: 2.12.2008
Из: Королев
Пользователь №: 1 283
Спасибо сказали: 127 раз




Название скрипта: WebStats
Версия скрипта: 0.3
Версия API: API 2
Автор: PomanoB
Описание скрипта:
Скрипт предназначен для вывода некоторой информации о хабе на сайт.
Основные функции:
- Вывод общей статистики хаба
- Гибко настраиваемый юзербар с поддержкой анимации: можно выбрать фон, шрифт, анимацию, размер, цвет, текст и координаты надписи/двух надписей
Пример юзербара можно посмотреть у меня в подписи
- RSS с информацией о текущей шаре хаба и количества пользователей
- Список хабов
- Построение диаграммы распределения пользователей по объему шары
- Построение графика распределения пользователей по клиентам
- Топ пользователей по шаре и времени онлайн
- Информация о всех пользователях с удобным поиском
- Поиск по нику, IP, профилю и клиенту
- Индивидуальная расширенная информация о каждом пользователе
- Система шаблонов позволят легко настраивать внешний вид
Файл block.php в папке inc предназначен для вывода информации в центральный блок сайта на главной странице

Пользователям lighttpd нужно подключить lighttpd-hub.conf
Пользователям Apache нужно найти в конфиге AllowOverride и написать там AllowOverride All

Необходимо запускать файл inc/cli.php с нужной периодичностью для обновления информации о хабах
RSS доступно по адресу hubstats/hub<номер_хаба>.xml

Пример работы скрипта можно посмотреть здесь - пример центрального блока
Пример главной страницы статистики - здесь

Небольшое обновление - быстрая сортировка по клику на соответвующей надписи в заголовке таблицы списка пользователей

V 0.1.2.1
- Исправлена ошибка поиска при множестве находимых элементов
- Более удобный поиск по профилю

V 0.2.0
- Переход на XSLT-преобразования
- Отделение графиков от информации о хабе
- Новый дизайн
- Поддержка ланг-файлов
- Новый формат таблицы пользователей
- Изменение поиска
- Устранение багов

v 0.2.0.1
- Оптимизация
- Исправление багов

v 0.2.0.2
- Исправлена ошибка с русскими ссылками

v 0.3
- Переработан юзербар и добавлена возможность анимации юзербара
- Добавлен список хабов
- RSS
- отбор пользователей по онлайн


Прикрепленные файлы
Прикрепленный файл  hubstats.zip ( 4.27 мегабайт ) Кол-во скачиваний: 1140
 
Go to the top of the page
+Quote Post
22 страниц V  « < 20 21 22  
Начать новую тему
Ответов
Fe(one)X
сообщение 15.5.2011, 0:10
Сообщение #422


Активный участник
***

Группа: Пользователи
Сообщений: 58
Регистрация: 6.2.2010
Из: Россия, г. Волжский
Пользователь №: 5 963
Спасибо сказали: 0 раз




Всем привет. Возникла небольшая проблема. Может кто поможет?
В общем недавно на странице поиска в веб-статистике у меня ни с того ни с сего появился 1 Warning предупреждающий в index.php о том, что линии не в кодировке UTF-8. Решил проблему полной очисткой строки ws_users в phpMyAdmin. После этого на странице Пользватели появилось 2 новых варнинга, как их устранить не знаю.
Код
Warning: DOMDocument::createElement() [domdocument.createelement]: unterminated entity reference Lilith in C:\Program Files\Wamp\www\hubstats\inc\users.php on line 148

Warning: DOMDocument::createElement() [domdocument.createelement]: unterminated entity reference Lilith in C:\Program Files\Wamp\www\hubstats\inc\users.php on line 148


Полный код users.php:
Показать код

<?php
$contentXML = new DOMDocument;
$content = $contentXML -> createElement('content');
$contentXML -> appendChild($content);

if(isset($_GET['new']))
{
unset($_SESSION['online']);
unset($_SESSION['nick']);
unset($_SESSION['ip']);
unset($_SESSION['client']);
unset($_SESSION['profile']);
}

$sort_order = array('nick','ip', 'profile', 'share_size', 'online_time ', 'client', 'hubs', 'slots');
$sort_direction = array('ASC', 'DESC');
$sort_o = (isset($_SESSION['sort_o']) ? $_SESSION['sort_o'] : 3);
$sort_d = (isset($_SESSION['sort_d']) ? $_SESSION['sort_d'] : 1);
if(isset($_GET['sort_o']))
{
$sort_o = abs((int)$_GET['sort_o']);
if($sort_o > (count($sort_order)-1))
$sort_o = 3;
$_SESSION['sort_o'] = $sort_o;

if (isset($_SESSION['sort_d']))
{
$_SESSION['sort_d'] = $_SESSION['sort_d'] ? 0 : 1;
$sort_d = $_SESSION['sort_d'];
}
else
{
$_SESSION['sort_d'] = 1;
$sort_d = $_SESSION['sort_d'];
}
}

$order = ' ORDER BY '.$sort_order[$sort_o].' '.$sort_direction[$sort_d];

$where = '';
$title = $lang -> getElementsByTagName('title_users')-> item(0) -> nodeValue;

if(isset($_POST['online']) || isset($_GET['online']))
{
$_SESSION['online'] = true;
}
if(isset($_POST['nick']))
{
$_SESSION['nick'] = $_POST['nick'];
}
if(isset($_POST['ip']))
{
$_SESSION['ip'] = $_POST['ip'];
}
if(isset($_POST['client']))
{
$_SESSION['client'] = $_POST['client'];
}
if(isset($_POST['profile']))
{
$_SESSION['profile'] = $_POST['profile'];
}
if(isset($_SESSION['online']) && $_SESSION['online'])
{
$where .= " AND disconnect_time < login_time";
$title .= $lang -> getElementsByTagName('with_online')-> item(0) -> nodeValue;
}
if(isset($_SESSION['nick']) && $_SESSION['nick'] != '')
{
if (get_magic_quotes_gpc())
$where .= " AND nick LIKE '%".$_SESSION['nick']."%'";
else
$where .= " AND nick LIKE '%".addslashes($_SESSION['nick'])."%'";
$title .= $lang -> getElementsByTagName('with_nick')-> item(0) -> nodeValue;
}
if(isset($_SESSION['ip']) && $_SESSION['ip'] != '')
{
if (get_magic_quotes_gpc())
$where .= " AND ip LIKE '%".$_SESSION['ip']."%'";
else
$where .= " AND ip LIKE '%".addslashes($_SESSION['ip'])."%'";
$title .= $lang -> getElementsByTagName('with_ip')-> item(0) -> nodeValue;
}
if(isset($_SESSION['client']) && $_SESSION['client'] != '')
{
if (get_magic_quotes_gpc())
$where .= " AND client LIKE '%".$_SESSION['client']."%'";
else
$where .= " AND client LIKE '%".addslashes($_SESSION['client'])."%'";
$title .= $lang -> getElementsByTagName('with_client')-> item(0) -> nodeValue;
}
if(isset($_SESSION['profile']) && $_SESSION['profile'] != '')
{
$where .= ' AND profile = '.(int)$_SESSION['profile'];
$title .= $lang -> getElementsByTagName('with_profile')-> item(0) -> nodeValue;
}

$query = 'SELECT COUNT(*) FROM '.$PrefixTable.'users WHERE 1';
$query .= $where.$order;
$res = @mysql_query($query) or die(mysql_error());
$total = mysql_result($res,0);
mysql_free_result($res);
if(!$total)
{
$template = 'error.xsl';
$content -> appendChild($contentXML -> createElement('error', $lang -> GetElementsByTagName('error_no_find') -> item(0) -> nodeValue));
}
else
{
$template = 'users.xsl';

$users = $contentXML -> createElement('users');
$content -> appendChild($users);
$content -> appendChild($contentXML -> createElement('title', $title));

$query = 'SELECT profile_number, profile_name FROM '.$PrefixTable.'profiles ORDER BY profile_number';
$res = @mysql_query($query) or die(mysql_error());
while($row=mysql_fetch_array($res))
{
$profiles[$row['profile_number']] = $row['profile_name'];
}
mysql_free_result($res);

$pages_total = intval(($total - 1) / $UsersOnPage) + 1;
$show_page = isset($_GET['page']) ? abs((int)$_GET['page']) : 1;
if ($show_page > $pages_total)
$show_page = $pages_total;
$start = ($show_page-1) * $UsersOnPage;
$limit = ' LIMIT '.$start.', '.$UsersOnPage;

$query = 'SELECT nick, ip, profile, share_size, client, hubs, slots, online_time, login_time, disconnect_time FROM '.$PrefixTable.'users WHERE 1';
$query .= $where.$order.$limit;
$res = @mysql_query($query) or die(mysql_error());

while($row=mysql_fetch_assoc($res))
{
$user = $contentXML -> createElement('user');
$row['share_size'] = GetNormalShare($bytes_lang, $row['share_size']);
$row['online_time'] = GetNormalTime($time_lang, $row['online_time']);
$row['url'] = $row['nick'];
$row['nick'] = iconv('CP1251','UTF-8',$row['nick']);
$row['profile'] = $profiles[$row['profile']];
if($row['disconnect_time'] < $row['login_time'])
$user -> setAttribute('online', 1);
unset($row['disconnect_time']);
unset($row['login_time']);
foreach($row as $key => $value)
====== $user -> appendChild($contentXML -> createElement($key, $value));
$users -> appendChild($user);
}

if ($pages_total > 1)
{
$start_page = $show_page - $PagesForNavigation;
if ($start_page < 2)
$start_page = 2;
$end_page = $show_page + $PagesForNavigation;
if ($end_page >= $pages_total)
$end_page = $pages_total - 1;

$pages = $content -> appendChild($contentXML -> createElement('pages'));

$page = $pages -> appendChild($contentXML -> createElement('page'));
if ($show_page == 1)
$page -> setAttribute('current', 1);
$page -> appendChild($contentXML->createElement('href', '1'));
$page -> appendChild($contentXML->createElement('data', '1'));

if ($start_page > 2)
{
$page = $pages->appendChild($contentXML -> createElement('page'));
$page -> appendChild($contentXML -> createElement('href', $show_page-1));
$page -> appendChild($contentXML -> createElement('data', '...'));
}

for ($i = $start_page; $i <= $end_page; $i++)
{
$page = $pages -> appendChild($contentXML -> createElement('page'));
if ($i == $show_page)
$page -> setAttribute('current', 1);
$page -> appendChild($contentXML->createElement('href', $i));
$page -> appendChild($contentXML->createElement('data', $i));
}

if ($end_page < $pages_total - 1)
{
$page = $pages -> appendChild($contentXML -> createElement('page'));
$page -> appendChild($contentXML -> createElement('href', $show_page+1));
$page -> appendChild($contentXML -> createElement('data', '...'));
}

$page = $pages -> appendChild($contentXML -> createElement('page'));
if ($show_page == $pages_total)
$page -> setAttribute('current', 1);
$page -> appendChild($contentXML -> createElement('href', $pages_total));
$page -> appendChild($contentXML -> createElement('data', $pages_total));
}
}
?>

148-ую строку пометил как ======

До этого никаких проблем со статистикой не возникало. Я так понял возникают проблемы с какими-то определёнными пользователями из-за которых и появляются варнинги, потому что если чистить строку ws_users в БД, то варнинги пропадают. Короче если кто знает решение помогите. Буду очень благодарен. Заранее спасибо.
Go to the top of the page
+Quote Post
PomanoB
сообщение 15.5.2011, 9:04
Сообщение #423


AmxModx Scripter
*****

Группа: Пользователи
Сообщений: 302
Регистрация: 2.12.2008
Из: Королев
Пользователь №: 1 283
Спасибо сказали: 127 раз




http://mydc.ru/topic2193.html?view=findpost&p=31520


Спасибо сказали:
Go to the top of the page
+Quote Post
Fe(one)X
сообщение 15.5.2011, 23:20
Сообщение #424


Активный участник
***

Группа: Пользователи
Сообщений: 58
Регистрация: 6.2.2010
Из: Россия, г. Волжский
Пользователь №: 5 963
Спасибо сказали: 0 раз




Цитата(PomanoB @ 15.5.2011, 10:04) *

Спасибо, помогло!
Go to the top of the page
+Quote Post
Кулхацкер
сообщение 18.5.2011, 3:27
Сообщение #425


Абсолютный новичок


Группа: Пользователи
Сообщений: 1
Регистрация: 7.1.2011
Пользователь №: 8 482
Спасибо сказали: 0 раз




Приветствую всех! Cкрипт поставил на веб сервер на том же компе что и Ptokax. Заработал понравился автору респект и уважуха! Вопрос такой - можно ли заставить скрипт соединяться с базой данных, которая находится на хостинге а не на localhost и туда же на хостинг загрузить файлы веб сервера? Естественно Ptokax будет стоять у меня на компе. Просто сайт есть и хотелось бы чтобы на нем работало все. Прописываю в скрипте .lua адрес сервера с базой данных, логин к базе, пароль, название базы данных, но с базой соединяться скрипт не хочет вот такую ошибку выдает:
Синтаксис C:\Program Files\PtokaX 0.4.1.2\scripts\stats.lua:13: LuaSQL: Error connecting to database. MySQL: Can't connect to MySQL server on 'u257646.mysql.masterhost.ru' (10060)
Вот это u257646.mysql.masterhost.ru адрес сервера базы который мне дается при создании. То есть мне создают базу данных и ей номер генерируется и все и будет такого вида только цифры другие. Может быть адреса базы как то по другому надо прописывать не соображу. Скрипты есть работают на этом адресе но эти скрипты лежат там же на хостинге. Так вот как заставить скрипт работать с моей базой на хостинге. Да и вообще есть ли такая возможность или скрипт только будет работать на localhost и я зря мучаюсь. Я как бы посредник просто использую хостинг сам базы не создаю прошу и мне создают если надо поэтому не видел сами настройки хостинга и как там все работает. Мне сказали что другого адреса для баз данных нету поэтому я сюда вопрос и задаю есть ли возможность работы с такими базами на других хостингах.
Заранее благодарен за ответ и прошу прощения если такой вопрос уже поднимался!
Go to the top of the page
+Quote Post
PomanoB
сообщение 18.5.2011, 7:35
Сообщение #426


AmxModx Scripter
*****

Группа: Пользователи
Сообщений: 302
Регистрация: 2.12.2008
Из: Королев
Пользователь №: 1 283
Спасибо сказали: 127 раз




Возможно на хостинге запрещены внешние подключения к БД. Напиши в техподдержку
Go to the top of the page
+Quote Post
CyberGhost404
сообщение 27.12.2018, 23:28
Сообщение #427


Начинающий
*

Группа: Пользователи
Сообщений: 13
Регистрация: 5.3.2014
Из: Харьков
Пользователь №: 12 339
Спасибо сказали: 2 раза




Привет, я понимаю, тема уже давно была, и заброшен проект, но может ответит хоть кто нибудь, при запуске скрипта, выдает обишку: [22:11:18] <OpChat> /etc/ptokax/scripts/stats.lua:12: attempt to index global 'luasql' (a nil value)

библиотека стоит.

Подскажите пожалуйста.

PS: Ubuntu 16.04 ; Apache2.4 ; php5.6 ; mysql 5.7 ; ptokax 0.5.0.1_mod11
Go to the top of the page
+Quote Post

22 страниц V  « < 20 21 22
Ответить в данную темуНачать новую тему
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

Collapse

> Похожие темы

  Тема Ответов Автор Просмотров Последнее сообщение
No new Topic has attachmentsWebstats
Веб-статистика для хаба
33 Saymon21 33 394 12.3.2017, 15:29 Посл. сообщение: 000000
No New Posts От: Webstats
От темы с ID: 2193
0 Win32 4 531 10.11.2009, 6:28 Посл. сообщение: Win32
No New Posts От: Webstats
От темы с ID: 2193
0 mariner 4 731 26.7.2009, 10:44 Посл. сообщение: mariner

 



RSS Сейчас: 29.3.2024, 9:15