2013-04-28 65 views
0

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

这实际上与通常的要求相反,其中人们可能在搜索记录中查找包含关键字。对于那个可以使用...

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

而是我想找到“搜索字符串”中包含“记录”。例如,其中一个数据库记录可能是“垃圾邮件”,所以当用户提交一个像“[email protected]”这样的电子邮件地址时,就会发现它。

回答

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的结果都表示找到该关键字。

0

那么我知道你的标签是asp-classic,但是对相关问题使用合适的技术可能是一件好事。我建议你使用jQuery来做客户端验证。就像这样:

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

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

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

你BADWORDS的名单可以从表中的服务器端查询导出查询或硬编码。

HTH

+0

谢谢,但要求是经典的ASP。 JavaScript不合适。是的,使用硬编码列表可以简化操作,但硬编码列表不能更新,因为可以从Web表单更新表格。 – WilliamK 2013-04-28 16:05:15

+0

好的马的课程,你显然知道原因,但它肯定不是技术...这里使用jQuery与经典的ASP。 http://www.mikesdotnetting.com/Article/98/Ajax-with-Classic-ASP-using-jQuery – 2013-04-28 20:08:16

+0

JavaScript在这里不能改变任何东西。 SQL仍然需要被查询,这就是解决方案所在。查询JS作为VBscript仍然是ASP。 – WilliamK 2013-04-28 22:56:14

相关问题