VBsupport перешел с домена .ORG на родной .RU
Ура!
Пожалуйста, обновите свои закладки - VBsupport.ru
Блок РКН снят, форум доступен на всей территории России, включая новые терртории, без VPN
На форуме введена премодерация ВСЕХ новых пользователей
Почта с временных сервисов, типа mailinator.com, gawab.com и/или прочих, которые предоставляют временный почтовый ящик без регистрации и/или почтовый ящик для рассылки спама, отслеживается и блокируется, а так же заносится в спам-блок форума, аккаунты удаляются
Если вы хотите приобрести какой то скрипт/продукт/хак из каталогов перечисленных ниже: Каталог модулей/хаков
Ещё раз обращаем Ваше внимание: всё, что Вы скачиваете и устанавливаете на свой форум, Вы устанавливаете исключительно на свой страх и риск.
Сообщество vBSupport'а физически не в состоянии проверять все стили, хаки и нули, выкладываемые пользователями.
Помните: безопасность Вашего проекта - Ваша забота. Убедительная просьба: при обнаружении уязвимостей или сомнительных кодов обязательно отписывайтесь в теме хака/стиля
Спасибо за понимание
Может быть кому-нибудь и пригодится, вобщем, хак удаляет личные сообщения с определенным текстом.
Например, вводим в настройках хака текст "test", и хак удалит все ЛС с этим текстом, причем все произойдет так, что пользователь вообще не заметит что ему кто то отправлял ЛС.
ЛС будут проверяться и удаляться сразу же, после отправки ЛС.
В самом коде хака, уже заложено что он будет автоматом сносить ЛС со словом porno, остальные слова прописывайте в настройках.
Установка:
1. Импоритовать продукт для вашей кодировки форума.
2. Включить и настроить хак в админке.
Обновление.
Добавлена поддержка добавление нескольких фраз, а не одной как было раньше
Исправлены уязвимости.
Last edited by GiveMeABreak : 07-28-2009 at 10:10 PM.
посмотрел код хака
проверка слова (одного всего!):
PHP Code:
WHERE message LIKE '%" . $deltext . "%'");
==
предположим, что стоп-ворд = sex
а отправленное сообщение имеет такие слова: sexx, секс, порно, porno (и прочие)
в этом случае ЛС уйдет получателю
задумка неплохая, но реализация не ахти
@Ghost
Гуру
Join Date: Feb 2008
Posts: 983
Версия vB: 3.8.1
Reputation:
Гуру 1014
Репутация в разделе: 896
1
kerk, лично меня покоробило отсутствие экранирования этого самого $deltext -- а ну как я туда введу строку с апострофом внутри? :(
GiveMeABreak, на будущее: какой бы ты запрос не писал -- не вставляй строковые переменные в него as-is, а сперва прогоняй через функцию $vbulletin->db->escape_string (если не в вобле, то через mysql_real_escape_string). Иначе sql-инъекция и ай-ай-ай...
@mad@Max
Эксперт
Join Date: Jun 2007
Posts: 1,421
Версия vB: 3.8.4
Reputation:
Expert 2543
Репутация в разделе: 2281
0
Кстати да, хорошая идея, так сказать борьба против спама лс)))
kerk
k0t
Join Date: May 2005
Location: localhost
Posts: 28,748
Версия vB: 3.8.x
Пол:
Reputation:
Гуру 20279
Репутация в разделе: 8443
0
Quote:
Originally Posted by Ghost
меня покоробило отсутствие экранирования этого самого $deltext
да и это тоже =)
просто пока рассматривал код хака, тут уже пару постов появилось
if($vbulletin->options['del_pms_on_text'] AND (in_array($pm['message'], $deltext))) { $vbulletin->db->query_write("DELETE FROM " . TABLE_PREFIX . "pm WHERE pmid = " . $pm['pmid'] . ""); $vbulletin->db->query_write("DELETE FROM " . TABLE_PREFIX . "pmtext WHERE pmtextid = " . $pm['pmid'] . "");
} }
но работать не хочет :(
Last edited by GiveMeABreak : 07-23-2009 at 07:41 PM.
Reason: Добавлено сообщение
@Ghost
Гуру
Join Date: Feb 2008
Posts: 983
Версия vB: 3.8.1
Reputation:
Гуру 1014
Репутация в разделе: 896
1
'private_insertpm_process' -- pm еще не существует в базе и потому у него нет id. 'private_insertpm_complete' -- pm сохранено в базе, но его id не выбрано для дальнейшей обработки, т.к. незачем.
я бы юзал хук 'pmdata_presave', в котором проверял сообщение и выводил пользователю ошибку при помощи
PHP Code:
$this->error('имя фразы с текстом ошибки');
зачем удалять отправленное pm и обновлять счетчики пользователей, если можно просто запретить отправку?
зачем удалять отправленное pm и обновлять счетчики пользователей, если можно просто запретить отправку?
ну это тоже как вариант
kerk
k0t
Join Date: May 2005
Location: localhost
Posts: 28,748
Версия vB: 3.8.x
Пол:
Reputation:
Гуру 20279
Репутация в разделе: 8443
1
Quote:
Originally Posted by GiveMeABreak
AND (in_array($pm['message'], $deltext)
не совсем правильное решение
т.к. переменная $pm['message'] может НЕ являться одним словом, соотв. и написанный текст нельзя проверить, находится ли он в массиве $deltext
пример: