| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1096 人关注过本帖
标题:[求助]脏字过滤问题!
取消只看楼主 加入收藏
sosql
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2007-6-22
收藏
 问题点数:0 回复次数:8 
[求助]脏字过滤问题!
现在问题是插入不了留言,总提示“有违规内容”,我的想法是把脏字都存在数据库里!提交留言时就判断是否是脏字!

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
RollStr=Array(bad)
Ibound=Ubound(RollStr)
for i=0 to Ibound
if instr(BodyStr,RollStr(i))<>0 then
IsRoll=true
exit Function
end if
next
IsRoll=false
end function
if IsRoll(GBookBody) and IsRoll(GBookTitle) then
response.Write("<script language='JavaScript'>alert('有违规内容')</script>")
else
'保存留言
SQLStr="Insert Into 。。。
搜索更多相关主题的帖子: 脏字 数据库 RollStr Ibound 
2007-07-21 09:41
sosql
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2007-6-22
收藏
得分:0 
不是的,我把RollStr=Array(bad)改成RollStr=Array(“贱人”),就正确。
2007-07-21 11:05
sosql
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2007-6-22
收藏
得分:0 
高手,帮忙看看呀!
2007-07-21 11:26
sosql
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2007-6-22
收藏
得分:0 

那请问,我该怎么改?
需要过滤的内容是数据库里!给个完整的代码,让我看看把!

2007-07-21 11:50
sosql
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2007-6-22
收藏
得分:0 
以下是引用yms123在2007-7-21 11:59:06的发言:
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=False
Else
IsRoll=True
End IF
end function
if IsRoll(GBookBody) and IsRoll(GBookTitle) then
response.Write("<script language='JavaScript'>alert('有违规内容')</script>")
else
'保存留言
SQLStr="Insert Into 。。。
修改后的代码





不行的,版主!对脏字没有过滤!能写入留言!这是怎么回事???
2007-07-21 12:15
sosql
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2007-6-22
收藏
得分:0 
以下是引用yms123在2007-7-21 13:45:08的发言:
rs2("badwords") 这个字段在数据库怎么存储的?也就是以什么样是存储的。

varchar

2007-07-21 14:57
sosql
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2007-6-22
收藏
得分:0 
不是的!就是 aaa
2007-07-21 15:32
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
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
快速回复:[求助]脏字过滤问题!
数据加载中...
 
   



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

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