| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1096 人关注过本帖
标题:[求助]脏字过滤问题!
只看楼主 加入收藏
yms123
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:209
帖 子:12488
专家分:19042
注 册:2004-7-17
收藏
得分:0 
rs2("badwords") 这个字段在数据库怎么存储的?也就是以什么样是存储的。
2007-07-21 13:45
sosql
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2007-6-22
收藏
得分:0 
以下是引用yms123在2007-7-21 13:45:08的发言:
rs2("badwords") 这个字段在数据库怎么存储的?也就是以什么样是存储的。

varchar

2007-07-21 14:57
yms123
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:209
帖 子:12488
专家分:19042
注 册:2004-7-17
收藏
得分:0 
以下是引用sosql在2007-7-21 14:57:24的发言:

varchar

楼主这个字段是
"aaa|bbb|ccc"
这样存的?还是其他样子的?

2007-07-21 15:28
sosql
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2007-6-22
收藏
得分:0 
不是的!就是 aaa
2007-07-21 15:32
yms123
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:209
帖 子:12488
专家分:19042
注 册:2004-7-17
收藏
得分:0 
那楼主的过滤程序应该是单字过滤,按说Replace也是能够过滤的,楼主能不能把程序代码(就是这个功能的代码)贴全
2007-07-21 15:59
sosql
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2007-6-22
收藏
得分:0 

yms123------------------我就是按你给的代码写的! 表:badword 有2列:ID,badwords(varchar)如(1 aaa)
Sqltr="select badwords from badword"
Set rs2= Server.CreateObject("ADODB.RecordSet")
rs2.open Sqltr,Conn,1,1
dim bad
bad=rs2("badwords")
function IsRoll(BodyStr)
dim RollStr,Ibound,tBody
RollStr=array(bad)
Ibound=Ubound(RollStr)
for i=0 to Ibound
tBody=Replace(BodyStr,RollStr(i),"")
next
If tBody=BodyStr Then
IsRoll=True
Else
IsRoll=False
End IF
end function
Set rs= Server.CreateObject("ADODB.RecordSet")
if request.Form("Tag")="1" then

InformationID=request.Form("CaseID")
GBookTitle="'"&tosql(request.Form("GBookTitle"))&"'"
GBookBody="'"&tosql(request.Form("GBookBody"))&"'"
webaddress="'"&tosql(request.Form("webaddress"))&"'"
email="'"&tosql(request.Form("email"))&"'"
GBookType=tosql(request.Form("GBookType"))
ip="'"&request.ServerVariables("REMOTE_ADDR")&"'"
UserName="'"&tosql(request.Form("UserName"))&"'"
Relation="'"&tosql(request.Form("Relation"))&"'"
if IsRoll(GBookBody) or IsRoll(GBookTitle) then
response.Write("<script language='JavaScript'>alert('有违规内容')</script>")
else
'保存留言

SQLStr="Insert Into InformationGBook(InformationID,GBookTitle,GBookBody,webaddress,email,GBookType,ip,Relation,UserName)"
SQLStr=SQLStr&" Values("&InformationID&","&GBookTitle&","&GBookBody&","&webaddress&","&email&","&GBookType&","&ip&","&Relation&","&UserName&");"
SQLStr=SQLStr&"Update InformationBody Set InformationReply=InformationReply+1 "
SQLStr=SQLStr&"Where ID ="&CStr(InformationID)
Conn.execute(SQLStr)
response.Write("<script language='JavaScript'>alert('留言成功')</script>")
end if
end if
CaseID=request("CaseID")
if isnull(request("CaseID")) or isEmpty(request("CaseID")) or request("CaseID")="" then
CaseID=0
end if
SQLStr="Select * From EnterpriseBody Where ID="&CStr(CaseID)

rs.Open SQLStr,Conn,1,1

2007-07-22 13:44
yms123
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:209
帖 子:12488
专家分:19042
注 册:2004-7-17
收藏
得分:0 
function IsRoll(BodyStr)
dim RollStr,Ibound,tBody
RollStr=array(bad)
Ibound=Ubound(RollStr)
for i=0 to Ibound
tBody=Replace(BodyStr,RollStr(i),"")
next
If tBody=BodyStr Then
IsRoll=False
Else
IsRoll=True
End IF
end function
应该是逻辑错误楼主把这个函数改一下,那个判断给搞错了,这样再试试。
2007-07-22 13:53
sosql
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2007-6-22
收藏
得分:0 
以下是引用yms123在2007-7-22 13:53:45的发言:
function IsRoll(BodyStr)
dim RollStr,Ibound,tBody
RollStr=array(bad)
Ibound=Ubound(RollStr)
for i=0 to Ibound
tBody=Replace(BodyStr,RollStr(i),"")
next
If tBody=BodyStr Then
IsRoll=False
Else
IsRoll=True
End IF
end function
应该是逻辑错误楼主把这个函数改一下,那个判断给搞错了,这样再试试。

太感谢了!这个没问题!我是asp菜鸟!以后跟你多学的!

2007-07-22 14:01
opelmk
Rank: 1
等 级:新手上路
威 望:1
帖 子:83
专家分:0
注 册:2006-12-10
收藏
得分:0 
用REPLACE 或用INSTR来断断是否有脏字


有了去掉,或替换掉

乐优购(6UGO)电脑商城...支持支付宝付款。网络诚信购电脑硬件/www.
2007-07-23 03:04
快速回复:[求助]脏字过滤问题!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.040017 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved