Webstats, API2 | Веб-статистика для хаба |
Здравствуйте, гость ( Вход | Регистрация )
Webstats, API2 | Веб-статистика для хаба |
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 - отбор пользователей по онлайн
Прикрепленные файлы
Спасибо сказали: Nickolya, intlive, Invisible, mariner, LyaKich, fixx, Lesh™, Otshelnik-Fm, Vizunchik, -=Alexandr=-, truth, HackFresse, Parad0x, KT315, Andrew Frost, Kingston, PSIX, Saymon21, exxxx, Dimon21, SergeySV, TiGRpp, KamoK, Pro009, shmeks, UnFeeLing, DEN 007, Underconstruction, ke(x)one, dj_crazy_joker, мамин_парень |
|
|
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 в БД, то варнинги пропадают. Короче если кто знает решение помогите. Буду очень благодарен. Заранее спасибо. |
|
|
15.5.2011, 9:04
Сообщение
#423
|
|
AmxModx Scripter Группа: Пользователи Сообщений: 302 Регистрация: 2.12.2008 Из: Королев Пользователь №: 1 283 Спасибо сказали: 127 раз |
|
|
|
15.5.2011, 23:20
Сообщение
#424
|
|
Активный участник Группа: Пользователи Сообщений: 58 Регистрация: 6.2.2010 Из: Россия, г. Волжский Пользователь №: 5 963 Спасибо сказали: 0 раз |
Спасибо, помогло! |
|
|
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 и я зря мучаюсь. Я как бы посредник просто использую хостинг сам базы не создаю прошу и мне создают если надо поэтому не видел сами настройки хостинга и как там все работает. Мне сказали что другого адреса для баз данных нету поэтому я сюда вопрос и задаю есть ли возможность работы с такими базами на других хостингах. Заранее благодарен за ответ и прошу прощения если такой вопрос уже поднимался! |
|
|
18.5.2011, 7:35
Сообщение
#426
|
|
AmxModx Scripter Группа: Пользователи Сообщений: 302 Регистрация: 2.12.2008 Из: Королев Пользователь №: 1 283 Спасибо сказали: 127 раз |
Возможно на хостинге запрещены внешние подключения к БД. Напиши в техподдержку
|
|
|
27.12.2018, 23:28
Сообщение
#427
|
|
Начинающий Группа: Пользователи Сообщений: 14 Регистрация: 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 |
|
|
Похожие темы
Тема | Ответов | Автор | Просмотров | Последнее сообщение | |
---|---|---|---|---|---|
Webstats Веб-статистика для хаба |
33 | Saymon21 | 35 521 | 12.3.2017, 15:29 Посл. сообщение: 000000 | |
От: Webstats От темы с ID: 2193 |
0 | Win32 | 4 772 | 10.11.2009, 6:28 Посл. сообщение: Win32 | |
От: Webstats От темы с ID: 2193 |
0 | mariner | 4 949 | 26.7.2009, 10:44 Посл. сообщение: mariner |
|
Сейчас: 23.11.2024, 8:36 |