asp有效防止网站留言板出现垃圾留言/评论实现思路
2023-06-13 09:14:42 时间
一.在表单填写页面:<inputname="intime1"type="hidden"value="<%=Now()%>">
在提交处理页面,设置提交时间
复制代码代码如下:
在提交处理页面,设置提交时间
IfDateDiff("s",request.form("intime1"),Now())<5then
response.write"<SCRIPTlanguage=JavaScript>alert("您的留言速度太快,禁止留言!");"
response.write"this.location.href="vbscript:history.back()";</SCRIPT>"
response.end
endif
二.验证码
yz=cstr(request.Form("yz"))
yz1=cstr(session("yz1"))
ifyz1<>yzthen
Response.Write("<scriptlanguage=javascript>alert("请正确输入验证码!");</script>")
response.redirect("sign.asp")
endif
三.判断来路
server_v1=Cstr(Request.ServerVariables("HTTP_REFERER"))
"Response.Write(server_v1)
server_v2=Cstr(Request.ServerVariables("SERVER_NAME"))
"Response.Write(server_v2)
ifmid(server_v1,8,len(server_v2))<>server_v2then
Response.Write("<scriptlanguage=javascript>alert("禁止外部提交数据!");</script>")
response.end
endif
四.设置每日提交次数
"当用户每提交一次
ifrequest.cookies("postnum")=""then
response.cookies("postnum")=1
response.cookies("postnum").expires=DateAdd("h",24,Now())
else
response.cookies("postnum")=request.cookies("postnum")+1
endif
ifrequest.cookies("postnum")>3then
response.write"<SCRIPTlanguage=JavaScript>alert("今天留言次数超过限制,禁止留言!");"
response.write"this.location.href="vbscript:history.back()";</SCRIPT>"
response.end
endif
五.禁止IP
server_ip=Cstr(Request.ServerVariables("REMOTE_ADDR"))
ifright(server_ip,8)="194.165."then
response.write"禁止重叠提交194.165."
response.End()
endif
1、判断该发布信息是否有可靠的来路。只要是自然人发布的,那么他一定是通过我们提供给用户的提交页过来的,一定有一个来路;如果是机器发布的,就不会有来路信息。
"判断来路,禁止外部提交
dimserver_v1,server_v2
server_v1=Cstr(Request.ServerVariables("HTTP_REFERER"))
server_v2=Cstr(Request.ServerVariables("SERVER_NAME"))
ifserver_v1=""orinstr(server_v1,"/add.asp")<=0ormid(server_v1,8,len(server_v2))<>server_v2then
response.write"<SCRIPTlanguage=JavaScript>alert("来源非法,禁止外部提交!");"
response.write"this.location.href="vbscript:history.back()";</SCRIPT>"
response.end
endif
注意,上面的/add.asp就是提交页面来源页。当然,机器也可以伪造来路,这就要结合以下方式一起对付了。
2、验证码。验证码一直是对付机器垃圾留言的一个可行的方法。不同的验证码有不同的对付机器留言的能力,越复杂的验证码,机器越难破解。这需要在考虑用户的感受和对付机器之间选择一个平衡点。关于验证码的使用方法,我就不多说了,谷歌、百度里搜索下就会出现很多介绍。
3、判断来源提交的时间。如果在提交页停留的时间太短,比如20秒,一般只要是个人,他打字的时间都不必这个少。举例说明,在用户打开页面(如add.asp)的时候,我们记下这个时间,在form提交表单里增加一个隐藏对象,如:
<inputname="intime1"type="hidden"value="<%=Now()%>">
然后,当用户写好留言评论后提交到具体处理页面(如addok.asp)的时候,我们获取当前时间,和add.asp里的这个intime1时间比较,如果这个时间差小于设定的时间,如20秒,则禁止留言,判断为机器。代码可这样写:
IfDateDiff("s",request.form("intime1"),Now())<20then
response.write"<SCRIPTlanguage=JavaScript>alert("您的留言速度太快了吧,禁止留言!");"
response.write"this.location.href="vbscript:history.back()";</SCRIPT>"
response.end
endif
通过以上三种方法可以屏蔽掉绝大部分的机器垃圾留言评论,如果还有大量的留言的话,那多半是人肉留言了。但是,我们又如何对付人肉留言呢?flymorn也提供方法对付。
方法很简单,就是通过记录用户的cookies以及IP来限制同一用户发表留言的数量。比如一天24小时内,只允许同一用户发表信息5条。我们可以通过以下方法实现。
<%"当用户每提交一次
ifrequest.cookies("postnum")=""then
response.cookies("postnum")=1
response.cookies("postnum").expires=DateAdd("h",24,Now())
else
response.cookies("postnum")=request.cookies("postnum")+1
endif
ifrequest.cookies("postnum")>5then
response.write"<SCRIPTlanguage=JavaScript>alert("今天留言次数超过限制,禁止留言!");"
response.write"this.location.href="vbscript:history.back()";</SCRIPT>"
response.end
endif
%>
通过以上的限制,人工发帖也得到了一定的限制。上面的方法是基于cookies判断,当然用户可以通过浏览器清空COOKIES,但这样增加了他们发垃圾帖子的难度,提高了门槛。我们还可以继续判断发布者的IP,通过同一个IP下发帖限制数量来达到我们的目的。在此,就不再扩展,大家可以自己设计如何判断IP来限制发帖的方法。如果您对本文讨论的主题有看法或建议,欢迎留下评论,以便我们一起探讨。
相关文章
- ASP.NET 大文件下载的实现思路及代码
- 快速搭建ASP应用MySQL配置指南(asp配置mysql)
- 使用ASP连接MySQL实现数据库应用(asp连接空间mysql)
- 教程使用ASP连接MySQL,视频教程掌握一步搞定(asp连接mysql视频)
- ASP连接MySQL登录动态网站实战(asp 登录 mysql)
- 如何使用ASP添加MySQL引用(asp添加mysql引用)
- 数据如何使用ASP操作MySQL数据库(asp怎么存取mysql)
- ASP连接MySQL从初学者到专家(asp引用mysql)
- ASP把信息写入MySQL库的方法(asp写信息到mysql)
- ASP 操作简单,快速修改MySQL数据库(asp修改mysql)
- 灵活运用ASP与MySQL连接的妙用(asp与mysql连接)
- 基于ASP和MySQL的Web实验研究(asp mysql实验)
- ASP程序使用Oracle数据库实现智能化管理(asp 操作oracle)
- ASP技术保障Oracle数据库安全备份(asp备份oracle)
- ASP程序开发探索之oracle数据库(asp和oracle)
- ASP程序从Oracle数据库精挖宝贵资源(asp取oracle数据)
- 认识ASP.NET配置文件Web.config
- ByVal和ByRef(编写ASP子程序所用到命令)
- ASP.NET技巧:教你制做Web实时进度条
- asp中selecttop问题!~
- asp下根据标题生成关键字的代码
- asp静态页面的另一种思路
- 关于asp.netbutton按钮的OnClick和OnClientClick事件
- ASP.NETSession会导致的性能问题
- ASP.NET服务器路径和一般资源调用
- asp获取url函数小结
- asp数字或者字符排序函数代码
- Asp.net在三层架构中事务的使用实例代码
- ASP.NET获取MSSQLServer安装实例实现思路及代码
- ASP.Net中英文复合检索文本框实现思路及代码
- Asp.net+jquery+.ashx文件实现分页思路
- asp.net中文件下载功能的实例代码
- ASP.NET实现TreeView的XML数据源绑定实例代码
- 实现Asp与Asp.Net共享Session的方法
- asp.net后台如何动态添加JS文件和css文件的引用