Файловый Архив

  • Неограниченное количество категорий и суб-категорий
  • Настройки прав доступа по группам
  • Настройки прав доступа по каждой категории
  • Предпросмотр медиа файлов: FLV, IFLV, F4A, F4V, MP4, MP3, MOV и других...
  • Мультизагрузка файлов - SWFUploader
  • Добавление файлов с сервера
Подробности и история обновлений продукта в этой теме
 
 
 
 

 
 
Здесь скоро опять что то будет...
 
 
 
 
 
 
Loading

Вернуться   форум vBSupport.org > vBulletin > vBulletin 3.8.x > Made in vBSupport.org 3.8

Объявления
  • Изменения в правах
  • Каталог Фрилансеров
  • Добро пожаловать!
  • Premoderation
  • Новичкам!
  • For English speaking users
Ответ
 
Опции темы Опции просмотра
Старый 23.07.2009, 17:26   #1
Эксперт
 
Аватар для GiveMeABreak
Lightbulb Удаление личных сообщений с определенным текстом

Может быть кому-нибудь и пригодится, вобщем, хак удаляет личные сообщения с определенным текстом.

Например, вводим в настройках хака текст "test", и хак удалит все ЛС с этим текстом, причем все произойдет так, что пользователь вообще не заметит что ему кто то отправлял ЛС.

ЛС будут проверяться и удаляться сразу же, после отправки ЛС.

В самом коде хака, уже заложено что он будет автоматом сносить ЛС со словом porno, остальные слова прописывайте в настройках.

Установка:
1. Импоритовать продукт для вашей кодировки форума.
2. Включить и настроить хак в админке.

Обновление.
Добавлена поддержка добавление нескольких фраз, а не одной как было раньше
Исправлены уязвимости.
Вложения
Тип файла: xml product-delete_pms_on_text_UTF-8.xml (3.2 Кб, 19 просмотров)
Тип файла: xml product-delete_pms_on_text_Win-1251.xml (3.0 Кб, 46 просмотров)

Последний раз редактировалось GiveMeABreak; 28.07.2009 в 21:10..
  Ответить с цитированием
Сказали Спасибо:
Скрыть список поблагодаривших

Erepb (17.01.2010), Giatestor (11.12.2009), lddnsk (17.05.2010), Luvilla (27.07.2009), mad@Max (23.07.2009), naruto (24.07.2009), Orfo (23.07.2009), Red-Devil (23.07.2009), Sakuredo (04.11.2009), syn (14.04.2011), TAIFUN (23.07.2009)
Рекламка
Реклама на форуме

Файловый Архив

  • Неограниченное количество категорий и суб-категорий
  • Тонкие настройки прав доступа
  • Предпросмотр медиа файлов: FLV, IFLV, F4A, F4V, MP4, MP3, MOV и других...
  • Мультизагрузка файлов - SWFUploader
  • Добавление файлов с сервера
Подробности и история обновлений продукта в этой теме
Старый 23.07.2009, 17:38   #2
kerk
k0t
 
Аватар для kerk
посмотрел код хака
проверка слова (одного всего!):
PHP код:
WHERE message LIKE '%" . $deltext . "%'"); 
==
предположим, что стоп-ворд = sex
а отправленное сообщение имеет такие слова: sexx, секс, порно, porno (и прочие)
в этом случае ЛС уйдет получателю
задумка неплохая, но реализация не ахти
  Ответить с цитированием
Старый 23.07.2009, 17:51   #3
Ghost
Гуру
 
Аватар для Ghost
kerk, лично меня покоробило отсутствие экранирования этого самого $deltext -- а ну как я туда введу строку с апострофом внутри? :(

GiveMeABreak, на будущее: какой бы ты запрос не писал -- не вставляй строковые переменные в него as-is, а сперва прогоняй через функцию $vbulletin->db->escape_string (если не в вобле, то через mysql_real_escape_string). Иначе sql-инъекция и ай-ай-ай...
  Ответить с цитированием
Старый 23.07.2009, 17:51   #4
mad@Max
Эксперт
 
Аватар для mad@Max
Кстати да, хорошая идея, так сказать борьба против спама лс)))
  Ответить с цитированием
Старый 23.07.2009, 18:10   #5
kerk
k0t
 
Аватар для kerk
Цитата:
Сообщение от Ghost Посмотреть сообщение
меня покоробило отсутствие экранирования этого самого $deltext
да и это тоже =)
просто пока рассматривал код хака, тут уже пару постов появилось
  Ответить с цитированием
Старый 23.07.2009, 18:41   #6
GiveMeABreak
Эксперт
 
Аватар для GiveMeABreak
странно, почему $pm['pmid'] не работает на хуках private_insertpm_complete и private_insertpm_process

GiveMeABreak добавил 23.07.2009 в 18:41
хочу сделать вот так
PHP код:
if($vbulletin->options['del_pms_on_text_on_off'])
{
$deltext explode(","$vbulletin->options['del_pms_on_text']);

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'] . "");

  }

но работать не хочет :(

Последний раз редактировалось GiveMeABreak; 23.07.2009 в 18:41.. Причина: Добавлено сообщение
  Ответить с цитированием
Старый 23.07.2009, 18:49   #7
Ghost
Гуру
 
Аватар для Ghost
'private_insertpm_process' -- pm еще не существует в базе и потому у него нет id. 'private_insertpm_complete' -- pm сохранено в базе, но его id не выбрано для дальнейшей обработки, т.к. незачем.
я бы юзал хук 'pmdata_presave', в котором проверял сообщение и выводил пользователю ошибку при помощи
PHP код:
$this->error('имя фразы с текстом ошибки'); 
зачем удалять отправленное pm и обновлять счетчики пользователей, если можно просто запретить отправку?
  Ответить с цитированием
Старый 23.07.2009, 18:53   #8
GiveMeABreak
Эксперт
 
Аватар для GiveMeABreak
Цитата:
зачем удалять отправленное pm и обновлять счетчики пользователей, если можно просто запретить отправку?
ну это тоже как вариант
  Ответить с цитированием
Старый 23.07.2009, 19:06   #9
kerk
k0t
 
Аватар для kerk
Цитата:
Сообщение от GiveMeABreak Посмотреть сообщение
AND (in_array($pm['message'], $deltext)
не совсем правильное решение
т.к. переменная $pm['message'] может НЕ являться одним словом, соотв. и написанный текст нельзя проверить, находится ли он в массиве $deltext
пример:
PHP код:
$stop_words = array('word1''word2''word3''word4',);
$pm['message'] = "word1 word3 word2 word4";
if(
in_array($pm['message'], $stop_words))
{
     print 
"In Array";
}
else
{
     print 
"NOT In Array";

и результат будет NOT In Array
и соответственно проверку пройдет
  Ответить с цитированием
Старый 23.07.2009, 19:34   #10
GiveMeABreak
Эксперт
 
Аватар для GiveMeABreak
kerk, есть какие нибудь предложения?
  Ответить с цитированием
Ответ

Закладки

Метки
личная почта, удаление личных сообщений

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.



 
 

Текущее время: 13:48 25.05.2012. Часовой пояс GMT +4.


Powered by vBulletin® Version 3.8.0
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd. Перевод: zCarot