Использование PHP, чтобы избежать бессмысленного текста в полях формы - PullRequest
2 голосов
/ 14 июля 2011

Я пытался создать скрипт формы php, который обрабатывает данные, представленные пользователем, но я хочу выяснить, как я могу разрешить указывать только полный текст в таких полях формы, как "Honey" и других реальных значениях полных имен пользователей

Я имею в виду, что иногда пользователь может ввести свое имя, например: assalhdjsdyoeorsdhs. хотя введенный текст находится в пределах допустимой длины текста, но не является именем вообще, как запретить такие бессмысленные имена пользователей, которые созданы для того, чтобы просто отправить запись, как на странице комментариев.

Ответы [ 6 ]

5 голосов
/ 14 июля 2011

Из списка существующих имен пользователей создайте цепочку Маркова по вероятности следующей буквы. Например. когда вы встречаете букву D, вполне вероятно, что следующая буква - это буква E, но вполне вероятно, что это буква M.

Затем проверьте каждое новое имя пользователя по этой цепочке Маркова, чтобы определить вероятность того, что это нормальное имя пользователя.

enter image description here

1 голос
/ 14 июля 2011

Я думаю, что единственный верный способ сделать это - вмешательство человека в процесс утверждения для новых пользователей.

Я не знаю, подходит ли вам этот вариант, но программная система наверняка доставит больше хлопот, чем просто игнорирование проблемы.

У меня была похожая проблема на доске объявленийЯ запускаю, в конце концов я назначил некоторых доверенных пользователей администраторами, и все новые пользователи должны были авторизоваться вручную.Проблема была решена, но у нас не так много новых пользователей.

Редактировать

Другой вариант, о котором я только что подумал, - это использовать один изметоды, предложенные здесь, чтобы пометить имя пользователя для человеческого внимания.

0 голосов
/ 14 июля 2011

http://www.haykranen.nl/2008/09/21/markov/ это может быть полезно.у него есть markov generator с некоторым источником для загрузки.попробуй.

0 голосов
/ 14 июля 2011

Сначала вы должны определить, что вы считаете "значимым". Имеет ли значение "Демла"? Возможно, его нет в словаре (по крайней мере, в голландском :)), поэтому вы не можете его использовать. Вы могли бы анализировать для определенных форм слова, но вы должны были бы принять все ложные срабатывания или ложные отрицания как должное. Это не будет 100% на всех. Asd это имя? или начало ASDF?

Вы могли бы начать что-то с цепью Маркова, но вам было бы трудно понять это правильно, а также объяснить это своим пользователям на ложных срабатываниях ...

Я бы отфильтровал проблемные записи в других полях и запретил бы некоторые базовые вещи (например, буквы).

0 голосов
/ 14 июля 2011

Вы можете скачать текстовый словарь, а затем проверить, есть ли зарегистрированное имя в этом словаре.Вот пример веб-сайта со словарями, включая английский: http://www.winedt.org/Dict/

0 голосов
/ 14 июля 2011

Вы должны создать базу данных, в которой будут храниться соответствующие имена. Откуда вы можете проверить каждую запись. Невозможно запретить пользователям отправлять такие слова, как «agasdffdssd»

...