ChatLogsMySQL, API2 | Лог главного чата |
Здравствуйте, гость ( Вход | Регистрация )
ChatLogsMySQL, API2 | Лог главного чата |
21.4.2009, 20:28
Сообщение
#181
|
|
Самый главный активист :-D Группа: Модераторы Сообщений: 2 790 Регистрация: 29.6.2008 Из: г. Тула Пользователь №: 97 Спасибо сказали: 440 раз |
Название скрипта: ChatLogsMySQL
Версия скрипта: 1.0(финальная версия) Версия API: API 2 Автор: Wariner Особенности: работа с MySQL Описание скрипта: v 1.0 - Исправленны некоторые недочёты. v 1.0 RC5 - Добавлен просмотр сообщений по IP - Упорядочено тело скрипта -Добавлена корректировка времени -Добавленно шаблонность сообщений -Добавлен реконект к БД -Исправленно пару мелочей v 1.0 RC4 - Поправленно несколько мелочей v 1.0 RC3 - В настройку вынесено меню - Добавлена возможность логировать команду "me" (опционально) - Исправлено логирование смайлов v 1.0 RC2 - Просмотр сообщений ника( за сегодня, за дату или за период ) - Просмотр общего лога( за период ) - Таблица исключений записи в лог - Запись ошибок скрипта в таблицу + контроль неправильных запросов - Теперь не логируются команды - Исправлено пару мелочей v 1.0 RC1 - Сохраняет в БД сообщение юзера время и дату его написания - Можно посмотреть лог за число - Опционально сделана посылка в чат n последних сообщений из БД PS: БД надо создавать вручную! Таблицы создадутся сами! PPS: Принимаются предложения по увеличению функционала скрипта!
Прикрепленные файлы
|
|
|
12.4.2010, 20:08
Сообщение
#182
|
|
RusHub team lead Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз |
Подобного рода ошибка может быть только в том случае, если в имени столбца содержится знак процента. По своей сути скрипт вроде как не создаёт таблиц со знаками процента в именах столбцов.
Попробуй вот такое решение: Код sMsg = sMsg:gsub(i, v:gsub("%%", "%%%%"))
|
|
|
12.4.2010, 20:13
Сообщение
#183
|
|
Участник Группа: Пользователи Сообщений: 40 Регистрация: 22.3.2009 Пользователь №: 2 696 Спасибо сказали: 0 раз |
Так он не сохраняет в базу, вот что выводит:
Цитата ====================================================================================================
id Time Date Nick(IP) Msg ==================================================================================================== id 21:17:23 12.04.2010 Nick(IP) Msg ==================================================================================================== |
|
|
12.4.2010, 20:36
Сообщение
#184
|
|
RusHub team lead Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз |
Код v = v:gsub("%%", "%%%%") sMsg = sMsg:gsub(i, v) или просто вот так: Код sMsg = sMsg:gsub(i, (v:gsub("%%", "%%%%")))
|
|
|
18.4.2010, 21:39
Сообщение
#185
|
|
Участник Группа: Пользователи Сообщений: 40 Регистрация: 22.3.2009 Пользователь №: 2 696 Спасибо сказали: 0 раз |
Спасибо, помогло. Несколько суток работает не падает. Может имеет смысл обновить первый пост? Или в каждом конкретном случае по-разному будет написана эта строка?
|
|
|
1.5.2010, 20:53
Сообщение
#186
|
|
Начинающий Группа: Пользователи Сообщений: 29 Регистрация: 12.3.2010 Пользователь №: 6 335 Спасибо сказали: 1 раз |
У меня выходит ошибка
Синтаксис...Артем\\Рабочий стол\\птока\\scripts\\ChatlogsMYSQL.lua67:Error connecting to database. MYSQL:Acces denied for user 'root@localhost' ( using pasword YES ) |
|
|
1.5.2010, 21:00
Сообщение
#187
|
|
Site Reliability Engineer Группа: Модераторы Сообщений: 1 772 Регистрация: 27.6.2009 Из: Чувашия, г. Чебоксары Пользователь №: 3 719 Спасибо сказали: 479 раз |
Проверь правильно ли ввёл пароль.
|
|
|
11.6.2010, 20:00
Сообщение
#188
|
|
Активный участник Группа: Пользователи Сообщений: 83 Регистрация: 14.3.2009 Из: Belarus', Minsk Пользователь №: 2 593 Спасибо сказали: 0 раз |
Спасибо, отличный скрипт!
Единственное, вопрос. Как сделать отступ после последней выведенной строки. Если кто-то приходит или уходит сообщение об этом пишется без переноса в последней строке истории чата. - [2010-06-11] [11:29:31] <Ник> Последнее сообщение в истрии чата [11:30:48] *** Ушёл: Ник Крайне нестабильный скрипт какой-то. Пересоздал БД подчитсую, перезапустил скрипт. Теперь вроде всё ОК! |
|
|
13.6.2010, 14:44
Сообщение
#189
|
|
Активный участник Группа: Пользователи Сообщений: 83 Регистрация: 14.3.2009 Из: Belarus', Minsk Пользователь №: 2 593 Спасибо сказали: 0 раз |
Скрипт очень уязвим!
У меня он ломается от смайлов клиента. Когда пользователь пишет сообщение с 1 смайлом и скрипт в последующем выводит историю только до этого сообщения без переноса следующей строки, о чём я расписывал. Новые сообщения пишутся в БД, но выводить он будет всё равно до этого сообщения со смалом. Если удалить эту мессагу с БД, то скрипт продолжает нормально функционировать дальше, выводить все сообщения. Смайлы имееют код: \001 Как поправить ? |
|
|
15.6.2010, 19:56
Сообщение
#190
|
|
Продвинутый участник Группа: Пользователи Сообщений: 153 Регистрация: 21.9.2008 Из: Челябинск Пользователь №: 574 Спасибо сказали: 54 раза |
хм где-то косячек чтоли...почему-то не залогировалось сообщение с виду вроде обычное... там кроме букв разве что были =) - и \. вот \ как раз на конце предложения и в середине было.. в общем я написал пару слов поставил смайл и кинул адрес сайта в чат. в итоге сообщения в логе нет нашел причину, действительно, если в конце сообщения поставить \ то оно не логируется, как поправить это? вывод лога чата тоже как-то криво выводится...шапка таблицы очень сдвинута... вообще не логируется символ \ если он стоит в начале или середине сообщения то всё более или менее хорошо, в логе просто нет этого символа, всё остальное сообщение на месте. если же он стоит последним в сообщении, то в логе нет всего сообщения.. если написать \\ то в логе будет \ как это вылечить? Помогает замена последней функции (метода) или если точнее одной строчки по примеру в этом сообщении Спасибо, Setuper. |
|
|
16.6.2010, 16:01
Сообщение
#191
|
|
Абсолютный новичок Группа: Пользователи Сообщений: 1 Регистрация: 7.6.2010 Пользователь №: 7 008 Спасибо сказали: 3 раза |
Всем доброго времени суток. Приучил этот скрипт работать с полностью UTF-ной базой. Строка конвертится в UTF-8 при инсерте в базу, а при выводе в хаб обратно конвертируются в cp1521 Ник и Сообщение Для этого использовались функции конвертации от Setuper'а.
Если кому пригодится - ниже привожу дифф и готовую скрипту. Код < con:execute(("INSERT INTO `%sMainLogs` (`Date`, `Time`,`Nick`,`IP`,`Msg`) VALUES ('%s','%s','%s','%s','%s')"):dbformat(sPrefixTable, os.date("%Y-%m-%d"),os.date("%H:%M:%S"), tUser.sNick, tUser.sIP, sMsg))
--- > con:execute(("INSERT INTO `%sMainLogs` (`Date`, `Time`,`Nick`,`IP`,`Msg`) VALUES ('%s','%s','%s','%s','%s')"):dbformat(sPrefixTable, os.date("%Y-%m-%d"),os.date("%H:%M:%S"), tUser.sNick, tUser.sIP, AnsiToUtf8(sMsg))) 276a279,284 > if i == "Nick" then > sMsg = Utf8ToAnsi(sMsg) > elseif i == "Msg" then > sMsg = Utf8ToAnsi(sMsg) > end > 305a314 > 322a332,408 > > local ansi_decode={ > [128]='\208\130',[129]='\208\131',[130]='\226\128\154',[131]='\209\147',[132]='\226\128\158',[133]='\226\128\166', > [134]='\226\128\160',[135]='\226\128\161',[136]='\226\130\172',[137]='\226\128\176',[138]='\208\137',[139]='\226\128\185', > [140]='\208\138',[141]='\208\140',[142]='\208\139',[143]='\208\143',[144]='\209\146',[145]='\226\128\152', > [146]='\226\128\153',[147]='\226\128\156',[148]='\226\128\157',[149]='\226\128\162',[150]='\226\128\147',[151]='\226\128\148', > [152]='\194\152',[153]='\226\132\162',[154]='\209\153',[155]='\226\128\186',[156]='\209\154',[157]='\209\156', > [158]='\209\155',[159]='\209\159',[160]='\194\160',[161]='\209\142',[162]='\209\158',[163]='\208\136', > [164]='\194\164',[165]='\210\144',[166]='\194\166',[167]='\194\167',[168]='\208\129',[169]='\194\169', > [170]='\208\132',[171]='\194\171',[172]='\194\172',[173]='\194\173',[174]='\194\174',[175]='\208\135', > [176]='\194\176',[177]='\194\177',[178]='\208\134',[179]='\209\150',[180]='\210\145',[181]='\194\181', > [182]='\194\182',[183]='\194\183',[184]='\209\145',[185]='\226\132\150',[186]='\209\148',[187]='\194\187', > [188]='\209\152',[189]='\208\133',[190]='\209\149',[191]='\209\151' > } > local utf8_decode={ > [128]={[147]='\150',[148]='\151',[152]='\145',[153]='\146',[154]='\130',[156]='\147',[157]='\148',[158]='\132',[160]='\134',[161]='\135',[162]='\149',[166]='\133',[176]='\137',[185]='\139',[186]='\155'}, > [130]={[172]='\136'}, > [132]={[150]='\185',[162]='\153'}, > [194]={[152]='\152',[160]='\160',[164]='\164',[166]='\166',[167]='\167',[169]='\169',[171]='\171',[172]='\172',[173]='\173',[174]='\174',[176]='\176',[177]='\177',[181]='\181',[182]='\182',[183]='\183',[187]='\187'}, > [208]={[129]='\168',[130]='\128',[131]='\129',[132]='\170',[133]='\189',[134]='\178',[135]='\175',[136]='\163',[137]='\138',[138]='\140',[139]='\142',[140]='\141',[143]='\143',[144]='\192',[145]='\193',[146]='\194',[147]='\195',[148]='\196', > [149]='\197',[150]='\198',[151]='\199',[152]='\200',[153]='\201',[154]='\202',[155]='\203',[156]='\204',[157]='\205',[158]='\206',[159]='\207',[160]='\208',[161]='\209',[162]='\210',[163]='\211',[164]='\212',[165]='\213',[166]='\214', > [167]='\215',[168]='\216',[169]='\217',[170]='\218',[171]='\219',[172]='\220',[173]='\221',[174]='\222',[175]='\223',[176]='\224',[177]='\225',[178]='\226',[179]='\227',[180]='\228',[181]='\229',[182]='\230',[183]='\231',[184]='\232', > [185]='\233',[186]='\234',[187]='\235',[188]='\236',[189]='\237',[190]='\238',[191]='\239'}, > [209]={[128]='\240',[129]='\241',[130]='\242',[131]='\243',[132]='\244',[133]='\245',[134]='\246',[135]='\247',[136]='\248',[137]='\249',[138]='\250',[139]='\251',[140]='\252',[141]='\253',[142]='\254',[143]='\255',[144]='\161',[145]='\184', > [146]='\144',[147]='\131',[148]='\186',[149]='\190',[150]='\179',[151]='\191',[152]='\188',[153]='\154',[154]='\156',[155]='\158',[156]='\157',[158]='\162',[159]='\159'},[210]={[144]='\165',[145]='\180'} > } > > local nmdc = { > [36] = '$', > [124] = '|' > } > > function AnsiToUtf8(s) > local r, b = '' > for i = 1, s and s:len() or 0 do > b = s:byte(i) > if b < 128 then > r = r..string.char(b) > else > if b > 239 then > r = r..'\209'..string.char(b - 112) > elseif b > 191 then > r = r..'\208'..string.char(b - 48) > elseif ansi_decode[b] then > r = r..ansi_decode[b] > else > r = r..'_' > end > end > end > return r > end > > function Utf8ToAnsi(s) > local a, j, r, b = 0, 0, '' > for i = 1, s and s:len() or 0 do > b = s:byte(i) > if b < 128 then > if nmdc[b] then > r = r..nmdc[b] > else > r = r..string.char(b) > end > elseif a == 2 then > a, j = a - 1, b > elseif a == 1 then > a, r = a - 1, r..utf8_decode[j][b] > elseif b == 226 then > a = 2 > elseif b == 194 or b == 208 or b == 209 or b == 210 then > j, a = b, 1 > else > r = r..'_' > end > end > return r > end[/font]
Прикрепленные файлы
|
|
|
16.8.2010, 18:20
Сообщение
#192
|
|
Активный участник Группа: Пользователи Сообщений: 65 Регистрация: 23.7.2009 Пользователь №: 3 945 Спасибо сказали: 7 раз |
Заметил ошибку скрипта.При введении магнетки скрипт накрывается.В базе появляется ошибка.Лечится с очистки в базе.Прошу автора перебрать скрипт.
СПС. |
|
|
23.8.2010, 10:25
Сообщение
#193
|
|
Активный участник Группа: Пользователи Сообщений: 65 Регистрация: 23.7.2009 Пользователь №: 3 945 Спасибо сказали: 7 раз |
Добрый день всем кто посещает этот форум.У меня возник вопрос.Что можно зделать в этом скрипте,чтоб не проходила реклама,хотя антиреклама стоит.Скрипт злостно записывает всё.
|
|
|
23.8.2010, 12:01
Сообщение
#194
|
|
Главный ра******й тут... Группа: Главные администраторы Сообщений: 1 727 Регистрация: 18.5.2008 Из: RF, 2la Пользователь №: 1 Спасибо сказали: 776 раз |
Поставить скрипт ниже антирекламы...
|
|
|
21.11.2010, 12:02
Сообщение
#195
|
|
Начинающий Группа: Пользователи Сообщений: 25 Регистрация: 1.10.2009 Из: Самара Пользователь №: 4 611 Спасибо сказали: 0 раз |
Доброго времени суток. Подскажите как по аккуратнее почистить бд. Скажем удалить последние 10к сообщений.
|
|
|
21.11.2010, 13:02
Сообщение
#196
|
|
Site Reliability Engineer Группа: Модераторы Сообщений: 1 772 Регистрация: 27.6.2009 Из: Чувашия, г. Чебоксары Пользователь №: 3 719 Спасибо сказали: 479 раз |
PhpMyAdmin в помощь
|
|
|
22.11.2010, 17:04
Сообщение
#197
|
|
Главный ра******й тут... Группа: Главные администраторы Сообщений: 1 727 Регистрация: 18.5.2008 Из: RF, 2la Пользователь №: 1 Спасибо сказали: 776 раз |
Saymon, жестко ты. Все же просто:
Код DELETE FROM `имя_таблицы` ORDER BY `id` DESC LIMIT 10000
|
|
|
21.12.2010, 8:14
Сообщение
#198
|
|
Активный участник Группа: Пользователи Сообщений: 85 Регистрация: 19.3.2009 Из: Россия, Хабаровский край, г.Комсомольск-на-Амуре Пользователь №: 2 652 Спасибо сказали: 39 раз |
Сообщения перевалили за 10к. Через меню перестало работать удаление сообщений. Ошибок скрипта нет, при неверном значении ошибок нет и нет сообщения. Незнаю куда копать
|
|
|
22.12.2010, 1:08
Сообщение
#199
|
|
Главный ра******й тут... Группа: Главные администраторы Сообщений: 1 727 Регистрация: 18.5.2008 Из: RF, 2la Пользователь №: 1 Спасибо сказали: 776 раз |
Мы перешли на переделанный скрипт Алекса, чего и вам советую: ChatHistorySQL, ибо этот уже не поддерживается. В базе нашего хаба уже приближается к 300000 записей и всё работает на ура
|
|
|
23.12.2010, 9:05
Сообщение
#200
|
|
Активный участник Группа: Пользователи Сообщений: 85 Регистрация: 19.3.2009 Из: Россия, Хабаровский край, г.Комсомольск-на-Амуре Пользователь №: 2 652 Спасибо сказали: 39 раз |
Блин... я прогнался...
У меня стоит тот скрипт, ChatHistorySQL.. Извиняйте |
|
|
Похожие темы
Тема | Ответов | Автор | Просмотров | Последнее сообщение | |
---|---|---|---|---|---|
ChatLogsMySQL версия 4.3d |
54 | Accelerator | 54 628 | 23.8.2011, 17:53 Посл. сообщение: Angel_D | |
От: ChatLogsMySQL От темы с ID: 1823 |
0 | Санёк | 4 694 | 13.6.2010, 14:44 Посл. сообщение: Санёк | |
От: ChatLogsMySQL От темы с ID: 1823 |
1 | Wariner | 5 897 | 2.8.2009, 0:22 Посл. сообщение: Saymon21 | |
От: ChatLogsMySQL От темы с ID: 1823 |
45 | Setuper | 36 372 | 27.4.2009, 17:44 Посл. сообщение: Wariner |
|
Сейчас: 27.11.2024, 3:19 |