Форумы » VOC++ чаты (больше не поддерживаются) »

Полезные дополнения для VOC++



299
mychatik
В последнее время стало "модным" каждое сообщение в чате завершать одним и тем же смайликом, близким по характеру или тематике ника пользователя...

Что же, раскроем секрет, как это сделать быстро и просто.

Эта информация скрыта и доступна только зарегистрированным пользователям.

Также ещё существует мод, устанавливающий эту картинку, через покупку в магазине.
299
mychatik
Для того, чтобы из чата можно было выходить с помощью команды [b]!выход[/b].

Открываем файл [b]sender.php[/b] в корне чата
и после

[code]$style_start = str_replace("#", $cpuLen, $style_start);[/code]
вставить

[code]if (strpos($mesg, "!выход") == 1) {
echo '<script>parent.window.location.assign("'.$chat_url.'logout.php?session='.$session.'");</script>';
exit();
}[/code]
299
mychatik
Ставим простую защиту от регистрации роботов в чате:

Идем в [b]дизайн[/b], файл [b]registration_form.php[/b]

Перед:

[code]</table>[/code]
Вставить:

[code]<tr>
<td></td><td>
<input type="checkbox" name="no_bot" value="1" class=input />&nbsp;<b>Я не робот!</b>
</td>
</tr>[/code]
Идем в [b]корень[/b] чата, файл [b]registration_add.php[/b]

Сразу после:

[code]<?php[/code]
Вставить:

[code]if(!isset($_POST['no_bot'])){exit('Терминаторам в чате не место! Если Вы не робот, необходимо вернуться назад и отметить «<b>Я не робот!</b>»');}[/code]
299
mychatik
Если у вас викторина пишется в логи и засоряет их:

Открываем [b]data/guiz/engine.php[/b]

после

[code]require_once($path_to_common.'inc_common.php');[/code]
вставляем

[code]$logging_messages = 0;
$logging_ban = 0;[/code]
Перезапускаем викторину.

В результате, в логах останутся только правильные ответы. А сам вопрос и подсказки писаться не будут.
Таким образом будет резко снижен объём логов.
299
mychatik
Сортируем даты логов "общака" и "привата".
Теперь не надо будет искать нужную дату по всему списку. Все числа будут идти по порядку!!!

Эта информация скрыта и доступна только зарегистрированным пользователям.


Общак готов!

Для привата - ищем:

Эта информация скрыта и доступна только зарегистрированным пользователям.

Готово!
299
mychatik
Есть баг во всех чатах - если не установлена [b]Дата рождения [color=red]0.0.0[/color][/b], то в профиле, по умолчанию, стоит знак зодиака [b]Козерог[/b].

Исправляем этот баг :

1. Заливаем подходящую по размеру, смыслу и дизайну картинку в папку [b]designes/дизайн/zodiac/[/b]
например, такую: [img]https://imgs.su/upload/190/2147423641.jpg[/img] и переименовываем её на [b]zodiac.jpg[/b].
2. Открываем файл [b]zodiac.php[/b] и в самом низу ищем строки:

[code] default:
return "kozerog.jpg\";
break;
}
}
?>[/code]
3. В блоке [b] default:[/b], вместо [b]kozerog.jpg[/b] прописываем название своей картинки ([b]zodiac.jpg[/b]).

[b]P.S.[/b] А лучше всего установить новый [url=https://forum.vmeste.eu/viewtopic.php?pid=328714#p328714][b]ZODIAC V2.0[/b][/url]
299
mychatik
Чтобы при заходе в чат, или обновлении страницы чата, не слетала галочка "[b]Стиль[/b]".

Откройте файл [b]chat/designes/your_dis/sender_visible.php[/b] и найдите в нем строку:

[code]<td><input name="custom_style" type="checkbox" value=1><small><?php echo $w_roz_style; ?></small></td>[/code]
и замените её на:

[code]<td><input name="custom_style" type="checkbox" value="1" checked><small><?php echo $w_roz_style; ?></small></td>[/code]
299
mychatik
Кнопка "[b]Только в приват[/b]"

Когда галочка будет стоять, все сообщения при нажатии [b]Enter[/b] будут уходить в приват.
Очень удобно, если ведётся только приватная переписка.
Но при этом, желательно снять галку с "Очищать", потому что, если не будет ника адресата - сообщение вылетит в общак.

[img]http://imgs.su/users/67540/1467652410.png[/img]

Эта информация скрыта и доступна только зарегистрированным пользователям.
19
Skriptoff
[quote=mychatik]Ставим простую защиту от регистрации роботов в чате:[/quote]
Не советую использовать такую защиту, хотя я придумал ее, она была предназначена для быстрого решения защиты от роботов пока не установили новую капчу.
Эта "защита" не защитит от ботов, она только временно остановит злоумышленника пока он не добавит в свою программу дополнительное условие.

Чтобы предотвратить регистрацию ботов усложните капчу в чате, или еще лучше установите re-capcha от google как в [url]http://zu7.ru/registration_form.php[/url] (позже напишу инструкцию как это сделать, кому нужно прямо сейчас - пишите мне), тогда регистрация ботов будет невозможна.

Но это не единственная проблема VOC++ чата связанная с ботами, я нашел еще несколько уязвимостей, о которых не буду писать чтобы этим никто не пользовался, а сделаю скоро новую безопасную сборку чата.
27
beckham
Может для кого интересно будет. Нашел такие команды для викторины как Хелп и Звания.

Открываем: [b]languages/ru.php[/b]

Перед:
[code]?>[/code]
[spoiler]Вставляем:

[code]$quiz_rank_1 = "редкий гость";
$quiz_rank_2 = "гость";
$quiz_rank_3 = "салага";
$quiz_rank_4 = "новичок";
$quiz_rank_5 = "перспективный";
$quiz_rank_6 = "наловчившийся";
$quiz_rank_7 = "только посмотрите";
$quiz_rank_8 = "во даешь!";
$quiz_rank_9 = "успешный";
$quiz_rank_10 = "умник-разумник";
$quiz_rank_11 = "коллекционер букв";
$quiz_rank_12 = "громкое имя";
$quiz_rank_13 = "ишь как насобачился";
$quiz_rank_14 = "тонкий специалист";
$quiz_rank_15 = "редкий дока";
$quiz_rank_16 = "в самом расцвете сил";
$quiz_rank_17 = "ас клавишного рукоделия";
$quiz_rank_18 = "венец постэволюции";
$quiz_rank_19 = "борец с энтропией";
$quiz_rank_20 = "дальше - больше";
$quiz_rank_21 = "профессионал";
$quiz_rank_22 = "азартный многовед";
$quiz_rank_23 = "вспоминатель-пониматель";
$quiz_rank_24 = "чудеса без решета";
$quiz_rank_25 = "запас в миллиард слов";
$quiz_rank_26 = "восприимчивый";
$quiz_rank_27 = "на полпути";
$quiz_rank_28 = "лексический зомби";
$quiz_rank_29 = "сноровистый клавишник";
$quiz_rank_30 = "чуткий ум";
$quiz_rank_31 = "реактивный уникум";
$quiz_rank_32 = "серьезный авторитет";
$quiz_rank_33 = "лингвоталант";
$quiz_rank_34 = "голова на плечах";
$quiz_rank_35 = "общая гордость";
$quiz_rank_36 = "искусный словесник";
$quiz_rank_37 = "смекалистый";
$quiz_rank_38 = "и жнец и швец";
$quiz_rank_39 = "героический эрудит";
$quiz_rank_40 = "владыка словарей";
$quiz_rank_41 = "одно слово - мастак";
$quiz_rank_42 = "достояние викторины";
$quiz_rank_43 = "безупречный мыслитель";
$quiz_rank_44 = "поглотитель знаний";
$quiz_rank_45 = "агент ноосферы";
$quiz_rank_46 = "неизлечимый игроман";
$quiz_rank_47 = "вербальный гурман";
$quiz_rank_48 = "сканер с памятью слона";
$quiz_rank_49 = "бывают же такие";
$quiz_rank_50 = "аналитическое хранилище";
$quiz_rank_51 = "взломщик реальности";
$quiz_rank_52 = "агент матрицы";
$quiz_rank_53 = "энциклопедоед";
$quiz_rank_54 = "ассоциативный биочип";
$quiz_rank_55 = "филологический мнемоник";
$quiz_rank_56 = "дитя инфоэры";
$quiz_rank_57 = "петабайтоголовый";
$quiz_rank_58 = "тиран нейронов";
$quiz_rank_59 = "фотонный процессор";
$quiz_rank_60 = "секретная разработка";
$quiz_rank_61 = "великий дух познания";
$quiz_rank_62 = "настоящий монстр";
$quiz_rank_63 = "архибог";
$quiz_rank_64 = "вселенское сознание";
$quiz_rank_65 = "гений игры";
$w_quiz_command_rank = "!звание";
$w_quiz_rank_answer = "<{USER_NAME}> имеет звание <b><{USER_RANK}></b>";

$w_quiz_command_help = "!хелп";
$w_quiz_help_answer = "Итак надо объяснить <{USER_NAME}> команды <b>ВИКТОРИН</b>ы:<br>Команда <b>!я</b> показывает сколько у пользователя верных ответов, кол-во поинтов и самый быстрый его ответ!<br>Команда <b>!йа</b> такая же что и <b>!я</b> 😀 <br>Команда <b>!топ</b> показывает 10 лучший викторинщиков!<br>Команда <b>!хелп</b> - это команда помощи, которую вы сейчас читаете 😀 <br>Команда <b>!звание</b> показывает текущее звание угадывающего!<br>Команда <b>!хз</b> пишет что вы понятия не имеет какой ответ на этот вопрос 😀 <br>Команда <b>!хм</b> показывает как вы думаете над данным вопросом 😀 ";[/code]
Создаем в корне файл help.php с таким содержанием:

[code]<?php
$lang_ru = $file_path.'languagеs/ru.php';
include($lang_ru);
if (trim($mesg) == $w_quiz_command_help)
{
$message_text = str_replace('<{USER_NAME}>', $user_name, $w_quiz_help_answer);
$messages_to_show[] = array(MESG_TIME=>my_time()+1,
MESG_ROOM=>$room_id,
MESG_FROM=>$bot_avatar.$bot_name,
MESG_FROMWOTAGS=>"",
MESG_FROMSESSION=>0,
MESG_FROMAVATAR=>"",
MESG_FROMID=>$is_regist,
MESG_TO=>"",
MESG_TOSESSION=>"",
MESG_TOID=>0,
MESG_BODY=>$message_text,
);
}
?>[/code]
Находим в корне чата файл quiz.php и перед:

[code]$quiz_answer_file = $data_path.'quiz/answer.dat';[/code]
Вставляем:

[code]$quiz_help = $file_path.'help.php';
include ($quiz_help);
$quiz_rank_file = $file_path.'rank.php';
include ($quiz_rank_file);[/code]
В корне создаем файл rank.php с таким содержанием:

[code]<?php
$langs_ru_path = $file_pat.'languages\ru.php';
include ($langs_ru_path);
$quiz_rank_raznica = 10;
if ($current_user->quiz >= 0*$quiz_rank_raznica) { if ($current_user->quiz < 1*$quiz_rank_raznica) $current_user->rank = $quiz_rank_1; }
if ($current_user->quiz >= 1*$quiz_rank_raznica) { if ($current_user->quiz < 2*$quiz_rank_raznica) $current_user->rank = $quiz_rank_2; }
if ($current_user->quiz >= 2*$quiz_rank_raznica) { if ($current_user->quiz < 3*$quiz_rank_raznica) $current_user->rank = $quiz_rank_3; }
if ($current_user->quiz >= 3*$quiz_rank_raznica) { if ($current_user->quiz < 4*$quiz_rank_raznica) $current_user->rank = $quiz_rank_4; }
if ($current_user->quiz >= 4*$quiz_rank_raznica) { if ($current_user->quiz < 5*$quiz_rank_raznica) $current_user->rank = $quiz_rank_5; }
if ($current_user->quiz >= 5*$quiz_rank_raznica) { if ($current_user->quiz < 6*$quiz_rank_raznica) $current_user->rank = $quiz_rank_6; }
if ($current_user->quiz >= 6*$quiz_rank_raznica) { if ($current_user->quiz < 7*$quiz_rank_raznica) $current_user->rank = $quiz_rank_7; }
if ($current_user->quiz >= 7*$quiz_rank_raznica) { if ($current_user->quiz < 8*$quiz_rank_raznica) $current_user->rank = $quiz_rank_8; }
if ($current_user->quiz >= 8*$quiz_rank_raznica) { if ($current_user->quiz < 9*$quiz_rank_raznica) $current_user->rank = $quiz_rank_9; }
if ($current_user->quiz >= 9*$quiz_rank_raznica) { if ($current_user->quiz < 10*$quiz_rank_raznica) $current_user->rank = $quiz_rank_10; }
if ($current_user->quiz >= 10*$quiz_rank_raznica) { if ($current_user->quiz < 11*$quiz_rank_raznica) $current_user->rank = $quiz_rank_11; }
if ($current_user->quiz >= 11*$quiz_rank_raznica) { if ($current_user->quiz < 12*$quiz_rank_raznica) $current_user->rank = $quiz_rank_12; }
if ($current_user->quiz >= 12*$quiz_rank_raznica) { if ($current_user->quiz < 13*$quiz_rank_raznica) $current_user->rank = $quiz_rank_13; }
if ($current_user->quiz >= 13*$quiz_rank_raznica) { if ($current_user->quiz < 14*$quiz_rank_raznica) $current_user->rank = $quiz_rank_14; }
if ($current_user->quiz >= 14*$quiz_rank_raznica) { if ($current_user->quiz < 15*$quiz_rank_raznica) $current_user->rank = $quiz_rank_15; }
if ($current_user->quiz >= 15*$quiz_rank_raznica) { if ($current_user->quiz < 16*$quiz_rank_raznica) $current_user->rank = $quiz_rank_16; }
if ($current_user->quiz >= 16*$quiz_rank_raznica) { if ($current_user->quiz < 17*$quiz_rank_raznica) $current_user->rank = $quiz_rank_17; }
if ($current_user->quiz >= 17*$quiz_rank_raznica) { if ($current_user->quiz < 18*$quiz_rank_raznica) $current_user->rank = $quiz_rank_18; }
if ($current_user->quiz >= 18*$quiz_rank_raznica) { if ($current_user->quiz < 19*$quiz_rank_raznica) $current_user->rank = $quiz_rank_19; }
if ($current_user->quiz >= 19*$quiz_rank_raznica) { if ($current_user->quiz < 20*$quiz_rank_raznica) $current_user->rank = $quiz_rank_20; }
if ($current_user->quiz >= 20*$quiz_rank_raznica) { if ($current_user->quiz < 21*$quiz_rank_raznica) $current_user->rank = $quiz_rank_21; }
if ($current_user->quiz >= 21*$quiz_rank_raznica) { if ($current_user->quiz < 22*$quiz_rank_raznica) $current_user->rank = $quiz_rank_22; }
if ($current_user->quiz >= 22*$quiz_rank_raznica) { if ($current_user->quiz < 23*$quiz_rank_raznica) $current_user->rank = $quiz_rank_23; }
if ($current_user->quiz >= 23*$quiz_rank_raznica) { if ($current_user->quiz < 24*$quiz_rank_raznica) $current_user->rank = $quiz_rank_24; }
if ($current_user->quiz >= 24*$quiz_rank_raznica) { if ($current_user->quiz < 25*$quiz_rank_raznica) $current_user->rank = $quiz_rank_25; }
if ($current_user->quiz >= 25*$quiz_rank_raznica) { if ($current_user->quiz < 26*$quiz_rank_raznica) $current_user->rank = $quiz_rank_26; }
if ($current_user->quiz >= 26*$quiz_rank_raznica) { if ($current_user->quiz < 27*$quiz_rank_raznica) $current_user->rank = $quiz_rank_27; }
if ($current_user->quiz >= 27*$quiz_rank_raznica) { if ($current_user->quiz < 28*$quiz_rank_raznica) $current_user->rank = $quiz_rank_28; }
if ($current_user->quiz >= 28*$quiz_rank_raznica) { if ($current_user->quiz < 29*$quiz_rank_raznica) $current_user->rank = $quiz_rank_29; }
if ($current_user->quiz >= 29*$quiz_rank_raznica) { if ($current_user->quiz < 30*$quiz_rank_raznica) $current_user->rank = $quiz_rank_30; }
if ($current_user->quiz >= 30*$quiz_rank_raznica) { if ($current_user->quiz < 31*$quiz_rank_raznica) $current_user->rank = $quiz_rank_31; }
if ($current_user->quiz >= 31*$quiz_rank_raznica) { if ($current_user->quiz < 32*$quiz_rank_raznica) $current_user->rank = $quiz_rank_32; }
if ($current_user->quiz >= 32*$quiz_rank_raznica) { if ($current_user->quiz < 33*$quiz_rank_raznica) $current_user->rank = $quiz_rank_33; }
if ($current_user->quiz >= 33*$quiz_rank_raznica) { if ($current_user->quiz < 34*$quiz_rank_raznica) $current_user->rank = $quiz_rank_34; }
if ($current_user->quiz >= 34*$quiz_rank_raznica) { if ($current_user->quiz < 35*$quiz_rank_raznica) $current_user->rank = $quiz_rank_35; }
if ($current_user->quiz >= 35*$quiz_rank_raznica) { if ($current_user->quiz < 36*$quiz_rank_raznica) $current_user->rank = $quiz_rank_36; }
if ($current_user->quiz >= 36*$quiz_rank_raznica) { if ($current_user->quiz < 37*$quiz_rank_raznica) $current_user->rank = $quiz_rank_37; }
if ($current_user->quiz >= 37*$quiz_rank_raznica) { if ($current_user->quiz < 38*$quiz_rank_raznica) $current_user->rank = $quiz_rank_38; }
if ($current_user->quiz >= 38*$quiz_rank_raznica) { if ($current_user->quiz < 39*$quiz_rank_raznica) $current_user->rank = $quiz_rank_39; }
if ($current_user->quiz >= 39*$quiz_rank_raznica) { if ($current_user->quiz < 40*$quiz_rank_raznica) $current_user->rank = $quiz_rank_40; }
if ($current_user->quiz >= 40*$quiz_rank_raznica) { if ($current_user->quiz < 41*$quiz_rank_raznica) $current_user->rank = $quiz_rank_41; }
if ($current_user->quiz >= 41*$quiz_rank_raznica) { if ($current_user->quiz < 42*$quiz_rank_raznica) $current_user->rank = $quiz_rank_42; }
if ($current_user->quiz >= 42*$quiz_rank_raznica) { if ($current_user->quiz < 43*$quiz_rank_raznica) $current_user->rank = $quiz_rank_43; }
if ($current_user->quiz >= 43*$quiz_rank_raznica) { if ($current_user->quiz < 44*$quiz_rank_raznica) $current_user->rank = $quiz_rank_44; }
if ($current_user->quiz >= 44*$quiz_rank_raznica) { if ($current_user->quiz < 45*$quiz_rank_raznica) $current_user->rank = $quiz_rank_45; }
if ($current_user->quiz >= 45*$quiz_rank_raznica) { if ($current_user->quiz < 46*$quiz_rank_raznica) $current_user->rank = $quiz_rank_46; }
if ($current_user->quiz >= 46*$quiz_rank_raznica) { if ($current_user->quiz < 47*$quiz_rank_raznica) $current_user->rank = $quiz_rank_47; }
if ($current_user->quiz >= 47*$quiz_rank_raznica) { if ($current_user->quiz < 48*$quiz_rank_raznica) $current_user->rank = $quiz_rank_48; }
if ($current_user->quiz >= 48*$quiz_rank_raznica) { if ($current_user->quiz < 49*$quiz_rank_raznica) $current_user->rank = $quiz_rank_49; }
if ($current_user->quiz >= 49*$quiz_rank_raznica) { if ($current_user->quiz < 50*$quiz_rank_raznica) $current_user->rank = $quiz_rank_50; }
if ($current_user->quiz >= 50*$quiz_rank_raznica) { if ($current_user->quiz < 51*$quiz_rank_raznica) $current_user->rank = $quiz_rank_51; }
if ($current_user->quiz >= 51*$quiz_rank_raznica) { if ($current_user->quiz < 52*$quiz_rank_raznica) $current_user->rank = $quiz_rank_52; }
if ($current_user->quiz >= 52*$quiz_rank_raznica) { if ($current_user->quiz < 53*$quiz_rank_raznica) $current_user->rank = $quiz_rank_53; }
if ($current_user->quiz >= 53*$quiz_rank_raznica) { if ($current_user->quiz < 54*$quiz_rank_raznica) $current_user->rank = $quiz_rank_54; }
if ($current_user->quiz >= 54*$quiz_rank_raznica) { if ($current_user->quiz < 55*$quiz_rank_raznica) $current_user->rank = $quiz_rank_55; }
if ($current_user->quiz >= 55*$quiz_rank_raznica) { if ($current_user->quiz < 56*$quiz_rank_raznica) $current_user->rank = $quiz_rank_56; }
if ($current_user->quiz >= 56*$quiz_rank_raznica) { if ($current_user->quiz < 57*$quiz_rank_raznica) $current_user->rank = $quiz_rank_57; }
if ($current_user->quiz >= 57*$quiz_rank_raznica) { if ($current_user->quiz < 58*$quiz_rank_raznica) $current_user->rank = $quiz_rank_58; }
if ($current_user->quiz >= 58*$quiz_rank_raznica) { if ($current_user->quiz < 59*$quiz_rank_raznica) $current_user->rank = $quiz_rank_59; }
if ($current_user->quiz >= 59*$quiz_rank_raznica) { if ($current_user->quiz < 60*$quiz_rank_raznica) $current_user->rank = $quiz_rank_60; }
if ($current_user->quiz >= 60*$quiz_rank_raznica) { if ($current_user->quiz < 61*$quiz_rank_raznica) $current_user->rank = $quiz_rank_61; }
if ($current_user->quiz >= 61*$quiz_rank_raznica) { if ($current_user->quiz < 62*$quiz_rank_raznica) $current_user->rank = $quiz_rank_62; }
if ($current_user->quiz >= 62*$quiz_rank_raznica) { if ($current_user->quiz < 63*$quiz_rank_raznica) $current_user->rank = $quiz_rank_63; }
if ($current_user->quiz >= 63*$quiz_rank_raznica) { if ($current_user->quiz < 64*$quiz_rank_raznica) $current_user->rank = $quiz_rank_64; }
if ($current_user->quiz >= 64*$quiz_rank_raznica) $current_user->rank = $quiz_rank_65;

if (trim($mesg) == $w_quiz_command_rank) {
$message_text = str_replace(array('<{USER_NAME}>', '<{USER_RANK}>'), array($user_name, $current_user->rank), $w_quiz_rank_answer);
$messages_to_show[] = array(MESG_TIME=>my_time()+1,
MESG_ROOM=>$room_id,
MESG_FROM=>$bot_avatar.$bot_name,
MESG_FROMWOTAGS=>"",
MESG_FROMSESSION=>0,
MESG_FROMAVATAR=>"",
MESG_FROMID=>$is_regist,
MESG_TO=>"",
MESG_TOSESSION=>"",
MESG_TOID=>0,
MESG_BODY=>$message_text,
);
}
?>[/code]
[/spoiler]
Вроде всё! Скажу сразу, я не помню 100% рабочий он или нет, пробуйте!
1555
TheDark
Oh my... Сколько говнокода в одном месте 🙁
19397
Dimitry
[quote=TheDark]Oh my... Сколько говнокода в одном месте 🙁 [/quote]
1+1=2
1+2=3
1+3=4
...
то ассемблер детка 🤣
5421
Глебон
😲 создано по принципу главное работает?
299
mychatik
[quote=TheDark]Oh my... Сколько говнокода в одном месте 🙁 [/quote]
Этот код я видел ещё на Нулледе, лет 8 назад.
Даже на одно время ставил его в свой чат.
А тогда, похоже, никто не заморачивался элегантностью кода.

[quote=Глебон] 😲 создано по принципу главное работает?[/quote]
Ну работает, же! 😀

Неавторизованные и новички не могут отправлять сообщения.

© 2008-2020 vmeste.eu
Контакты | Группа | Privacy и Cookie | Правила