0

我需要搜索一个表来查找是否在用户的表单输入中发现了一个坏词。所以我创建了一个函数来应用于每个表单输入,并且该函数检查数据库表以将其与输入字符串进行比较。

这实际上与通常需要搜索记录以查找包含关键字的要求相反。为此,可以使用...

SQL = "SELECT * FROM MailBlock WHERE Keyword LIKE '%" + Replace(strInputString, "'", "''") + "%' "

相反,我想在“搜索字符串”中找到“记录”的包含。例如,其中一个数据库记录可能是“垃圾邮件”,因此当用户提交诸如“me@spam.me”之类的电子邮件地址时,就会找到它。

4

2 回答 2

0

好吧,我知道您的标签是 asp-classic,但是为相关问题使用适当的技术可能是一件好事。我建议您使用 jquery 进行客户端验证。像这样:

if (str.indexOf("BadWord") >= 0)

如果你想要一个不区分大小写的搜索,你可以写

if (str.toLowerCase().indexOf("badword") >= 0)

您的 badWords 列表可以来自表查找的服务器端查询,或硬编码。

高温高压

于 2013-04-28T09:35:54.223 回答
0

这是一个使用 ASP 的选项。它不会识别触发了哪个关键字来报告可能与该关键字关联/记录的消息,但它会检查是否每个关键字都可能包含在表单的输入字符串中......

Function CheckMailBlock(mailString)
if mailString <> "" then    
    SQLMailBlock = "SELECT * FROM MailBlock Where MailBlock.Active = '1' "
    Set rsMailBlock = dbConnection.Execute(SQLMailBlock)
    if not rsMailBlock.EOF then         
        Do Until rsMailBlock.EOF
            strMailKeyword = rsMailBlock("Keyword").value
            If Instr(1, mailString, strMailKeyword, 1) <> "0" Then
                strMailBlockFound = strMailBlockFound & "1"
            End If
        rsMailBlock.MoveNext
        Loop
    end if
    rsMailBlock.Close
    Set rsMailBlock = Nothing
end if
    CheckMailBlock = strMailBlockFound
End Function

if CheckMailBlock(strInputString) then
    'cancel submission and do stuff
    strMessage = "Your submission was not acceptible!"
end if

如果在字符串中找到关键字,结果将为 1。如果找到第二个关键字,结果将为 11,因此任何大于 0 的结果都表示找到了关键字。

于 2013-04-29T05:49:14.567 回答