使用PHP避免表单字段中无意义的文本

时间:2011-07-14 10:40:55

标签: php forms validation semantics

我试图制作用于处理用户提交的数据的php表单脚本,但我想找到,我怎样才能在“Honey”和其他真正含义的完整用户名等表单字段中仅允许含义全文? p>

我的意思是,有时,用户可能会输入其名称:assalhdjsdyoeorsdhs。 虽然输入的文本在允许的文本长度内,但它根本不是名称,所以如何禁止这样的非感觉用户名,这些用户名只是为了在评论页面中提交条目而创建的。

6 个答案:

答案 0 :(得分:5)

从现有用户名列表中,在下一个字母的可能性上创建马尔可夫链。例如。当你遇到字母D时,很可能下一个字母是E但是它很可能就是M.

然后,针对此马尔可夫链检查每个新用户名,以确定它是普通用户名的可能性。

enter image description here

答案 1 :(得分:1)

我认为这样做的唯一可靠方法是在新用户的审批流程中进行人工干预。

我不知道这是否适合您,但基于软件的系统肯定比忽略问题更麻烦。

我在运行的公告板上遇到了类似的问题,最后我指定了一些可信用户作为管理员,所有新用户都必须手动授权。问题已经解决,但我们没有大量的新用户。

修改

我刚才想到的另一个选择是使用此处建议的方法之一标记用户名以供人类注意。

答案 2 :(得分:0)

您必须创建数据库,该数据库将保留相关名称。您可以在其中检查每个条目。无法阻止用户提交“agasdffdssd”等字词

答案 3 :(得分:0)

您可以下载纯文本字典,然后检查注册名称是否在该字典中。这是一个包含词典的示例网站,其中包括英语词典:http://www.winedt.org/Dict/

答案 4 :(得分:0)

您必须首先定义您认为“有意义”的内容。 “Demla”有意义吗?它可能不在字典中(至少不在荷兰语:)),所以你不能使用它。您可以解析某些字形,但您必须将所有误报或漏报视为理所当然。它根本不是100%。 Asd是一个名字吗?或ASDF的开头?

你可以用马尔可夫链开始一些事情,但你很难做到正确并且还会误解你的用户...

我会在其他字段上过滤有问题的条目,并且不允许一些基本的东西(比如字母)。

答案 5 :(得分:0)

http://www.haykranen.nl/2008/09/21/markov/这可能有用。它有markov generator有一些下载源。试试吧。