#php #jquery #filtering
#php #jquery #фильтрация
Вопрос:
У меня есть регистрационная форма, которая в основном использует PHP, но также имеет некоторые jquery / ajax.
В настоящее время я настроил его на проверку таблицы users в MySQL, а также таблицы deniedusers, чтобы люди знали, принято имя или отклонено. Я также добавил некоторое значение preg_match, чтобы избежать использования нежелательных символов. Также требуется, чтобы имена состояли не менее чем из 4 символов.
Однако я сталкиваюсь с парой проблем.
-
Если я разрешаю использование апострофа (O’Malley), пользователь может зарегистрироваться «». Это нежелательно.
-
Нецензурные слова. в моей таблице deniedusers я ввел много нецензурных слов, но это, конечно, не исчерпывающее. Итак, давайте использовать «butt», например. Я могу заблокировать «butt» в качестве имени пользователя в моей таблице deniedusers, но как насчет «Imabutt» или «mybutthole». Я знаю, что фильтрация может быть сложной, некоторые нецензурные слова довольно легко вписываются в обычные слова. Мне не нужно это для выполнения ВСЕЙ работы, но было бы здорово отфильтровать некоторые простые вещи.
Я ищу предложения о том, делать ли это на стороне PHP или на стороне jquery, и некоторые примеры кода или указатели на хорошие ресурсы. Спасибо!
Обновление: я получил отличные отзывы по пункту 2 — нецензурные слова. Большое спасибо.
Любая помощь по пункту 1, касающаяся странного использования символов, была бы высоко оценена.
Комментарии:
1. thedailywtf.com/Articles/The-Clbuttic-Mistake-.aspx
2. Просто не делайте этого. Попросите администратора просмотреть и удалить учетные записи с грубыми именами.
3. Человеческое творчество безгранично. Для каждого нецензурного слова, которое вы пытаетесь заблокировать, будет несколько способов обойти его. Может быть, вам следует использовать другой метод, такой как модерация?
4. Что, если кого-то зовут «баттер», или «баттерфляй», или «Миддлсекс»?
5. Я нашел в Google по крайней мере 7 законных людей с фамилией Шитли.
Ответ №1:
Это невыполнимая задача. Как сказал комментатор
Человеческое творчество безгранично
Вы никогда не сможете создать решение, достаточно надежное, чтобы а.) отлавливать все оскорбительное и б.) не причинять вреда законным пользователям. Смотрите http://www.codinghorror.com/blog/2008/10/obscenity-filters-bad-idea-or-incredibly-intercoursing-bad-idea.html .
Единственная работающая стратегия заключается в том, чтобы кто-то (или несколько человек) просматривал регистрации новых пользователей и искал оскорбительные вещи. Даже на сайте с достаточно высоким трафиком (скажем, 100 регистраций новых пользователей в день) это полностью управляемо.