Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Фильр цензуры
Форумы портала PHP.SU » » Хранение данных, их вывод и обработка » Фильр цензуры

Страниц (2): [1] 2 »
 

1. StasHappy - 02 Октября, 2013 - 15:27:17 - перейти к сообщению
Добрый день.

Хочу реализовать на сайте фильтр цензуры. И даже скорее не фильтр а условие. Скажем, если в строке имеются бранные слова, то выводим ошибку. В интернете искал решения, ничего хорошего не нашёл. Предлагают регулярки. Я попробовал парочку. Вроде и работают они, но многие слова пропускает. Незнаю как решить подобную задачу. Склоняюсь к использованию Базы данных со списком запрещенных слов и полнотекстового поиска по ним. Что посоветуете, как быть? Делаю фильтр для русского мата и английских ругательств.
2. IllusionMH - 02 Октября, 2013 - 15:32:25 - перейти к сообщению
StasHappy, в_с_е_г_д_а__н_а_й_д_е_т_с_я__в_ а_р_и_а_н_т__к_о_т_о_р_ы_й__о_б_ о_й_д_е_т__ф_и_л_ь_т_р.
Модерация и вараинт бана или запрета на отправку следующих сообщений при появлении жалобы на мат.
3. StasHappy - 02 Октября, 2013 - 15:36:06 - перейти к сообщению
Цитата:
в_с_е_г_д_а__н_а_й_д_е_т_с_я__в_ а_р_и_а_н_т__к_о_т_о_р_ы_й__о_б_ о_й_д_е_т__ф_и_л_ь_т_р.

С помощью регулярки, можно очистить строку от символов и оставить только буквы и цифры. А далее проверить на цензуру. Это не проблема. Но как лучше реализовать сам механизм? С помощью БД или как нибудь проще можно.
4. esterio - 02 Октября, 2013 - 15:39:41 - перейти к сообщению
StasHappy
Бросьте ето дело. Иначе пользователи будут страдать, а хулиганы все равно найдут обход
5. IllusionMH - 02 Октября, 2013 - 15:42:47 - перейти к сообщению
StasHappy, да сколько матофильтров не ставили, все равно будут проблемы если употреблять подобные(см. слева) слова. upd. Плохо обоработает эту строку, придется еще и весь словарь цензурных слов держать.
Так что если и делать, то
IllusionMH пишет:
Модерация ... жалобы на мат.
6. StasHappy - 02 Октября, 2013 - 15:44:13 - перейти к сообщению
Цитата:
Бросьте ето дело. Иначе пользователи будут страдать, а метрщики все равно найдут обход

Бросить не могу. Работаю над серьёзным проектом. Вы лучше посоветуйте мне решение данной задачи.Улыбка Есть какой либо вариант, наиболее лучший чем использование БД с полнотекстовым поиском?
(Добавление)
Цитата:
Модерация ... жалобы на мат.

Сервис, над которым я работаю, не занимаетс предварительной модерацией пользователиских сообщений. Пользователей много и сообщений много. За каждым не уследишь.
7. EuGen - 02 Октября, 2013 - 15:56:38 - перейти к сообщению
Решения не существует.
8. StasHappy - 02 Октября, 2013 - 16:10:58 - перейти к сообщению
Цитата:
Решения не существует.

Значит оно ещё просто не найдено.
9. Ch_chov - 02 Октября, 2013 - 16:20:56 - перейти к сообщению
А ещё можно смешивать русские и латинские символы.
10. IllusionMH - 02 Октября, 2013 - 16:29:17 - перейти к сообщению
Ch_chov, а еще можно использовать ASCII "картинки".

Тут поможет только эвристический алгоритм, который скопирован с мозга водопроводчика, сапожника, прапорщика и т.д.
Как делать плохое(матерится) так смекалка сразу включится.
Попробуйте реализовать свой вариант и посмотреть нагрузку и отношение правильных к неправильным срабатываниям.
Статистика покажет что при большой затрате ресурсов на написание и работу алгоритма, эффективность будет низкой.
Так что система тикетов — и все кому не нравятся мат имеют шансы "повлиять" на наказание виновных.
11. Zuldek - 02 Октября, 2013 - 16:34:29 - перейти к сообщению
жалоба+бан учетки
автоматическая деактивация сообщения при определенном числе жалоб.
12. Ch_chov - 02 Октября, 2013 - 16:37:40 - перейти к сообщению
Вообще таких фильтров на php куча в сети. Можете по гуглить. Про эффективность вам уже обосновали. Хотя я сам лично ни одного такого фильтра не тестировал.
13. EuGen - 02 Октября, 2013 - 17:20:51 - перейти к сообщению
StasHappy пишет:
Значит оно ещё просто не найдено.

Хорошо. Предположим, есть множество разрешённых символов и множество тех, что будет сначала вырезать фильтр (как Вы упоминали выше - чтобы не дать возможности чего-либо (п)(о)(д)(о)(б)(н)(о)(г)(о) - про то, что выражение типа F(x)=x пострадает - умолчим). Тогда, пусть слово "FOO" считается запрещённым, а, например, символ "H" будет разрешён.
Пожалуйста, решите подобное:
CODE (text):
скопировать код в буфер обмена
  1.  
  2. HHHH  HHHH  HHHH
  3. H     H  H  H  H
  4. HH    H  H  H  H
  5. H     H  H  H  H
  6. H     HHHH  HHHH
  7.  

- и подобных примеров будет великое множество. Слишком сильные меры (вырезание спец. символов, запрет нескольких сообщений подряд и т.п.) - приведёт к тому, что обмен сообщениями будет затруднён для нормальных пользователей. Те, кто желают нарушить - применят вдвое больше усилий, чтобы обойти фильтр, после того, как увидят, что таковой фильтр существует.
14. StasHappy - 02 Октября, 2013 - 19:53:48 - перейти к сообщению
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. HHHH  HHHH  HHHH
  3. H     H  H  H  H
  4. HH    H  H  H  H
  5. H     H  H  H  H
  6. H     HHHH  HHHH


EuGen. Врятли пользователи будут утруждать себя этим. Мне не требуется идеальных решений. Достаточно простого, но действенного варианта. Я думаю сделать следующим образом. Если пользователь вводит бранные слова и отправляет текст, то он будет предупрежден о правовой ответственности с указанием на соответсвующие правила и нормы. Мне по идее не нужен фильтр с заменой. Мне нужны только два состояния: TRUE или FALSE. Если TRUE, то значит строка содержит бранные выражения и мы останавливаем отправку сообщения и выводим предупреждение. Примерно так. Думаю если пользователь получит предупреждение, то он не будет дальше упорствовать в своих начинаниях.
(Добавление)
У меня последний вопрос. Как лучше сделать.. Или создать таблицу в БД и занести в неё список запрещенных слов. А в последствии уже по ним проверять строку(с помощью полнотекстового поиска). Или записать запрещенные слова в массив и пихнуть все это в отдельных php файл. Который впоследствии, будем подключать во время работы нашей функции. Что будет работать быстрее?
15. alexiy - 02 Октября, 2013 - 20:06:14 - перейти к сообщению
StasHappy
я не ленивый и поэтому
╔══╦╗╔╗╔╗╔══╗─╔══╦══╗
║╔╗║║║║║║║╔╗║─║╔╗║╔╗║
║║║║║║║║║║║║║─║║║║╚╝║
║║║║║║║║║║║║║─║║║║╔╗║
║║║║╚╝╚╝╠╝╚╝╚╦╝║║║║║║
╚╝╚╩════╩════╩═╝╚╩╝╚╝
угадай какую букву я хотел поставить вместо буквы "Ш" и как ты это сможешь остановить, на это дело потратил 5 секунд!

 

Powered by ExBB FM 1.0 RC1