asp有效防止网站留言板出现垃圾留言/评论实现思路

一.在表单填写页面: <input name="intime1" type="hidden" value="<%=Now()%>">
在提交处理页面,设置提交时间


代码如下:

If DateDiff("s",request.form("intime1"), Now()) < 5 then
response.write "<SCRIPT language=JavaScript>alert('您的留言速度太快,禁止留言!');"
response.write "this.location.href='vbscript:history.back()';</SCRIPT>"
response.end
end if

二.验证码


代码如下:

yz=cstr(request.Form("yz"))
yz1=cstr(session("yz1"))
if yz1<>yz then
Response.Write("<script language=javascript>alert('请正确输入验证码!');</script>")
response.redirect("sign.asp")
end if

三.判断来路


代码如下:

server_v1=Cstr(Request.ServerVariables("HTTP_REFERER"))
'Response.Write(server_v1)
server_v2=Cstr(Request.ServerVariables("SERVER_NAME"))
'Response.Write(server_v2)
if mid(server_v1,8,len(server_v2))<>server_v2 then
Response.Write("<script language=javascript>alert('禁止外部提交数据!');</script>")
response.end
end if

四.设置每日提交次数


代码如下:

'当用户每提交一次
if request.cookies("postnum")="" then
response.cookies("postnum")=1
response.cookies("postnum").expires=DateAdd("h", 24, Now())
else
response.cookies("postnum")=request.cookies("postnum")+1
end if
if request.cookies("postnum") > 3 then
response.write "<SCRIPT language=JavaScript>alert('今天留言次数超过限制,禁止留言!');"
response.write "this.location.href='vbscript:history.back()';</SCRIPT>"
response.end
end if

五.禁止IP


代码如下:

server_ip=Cstr(Request.ServerVariables("REMOTE_ADDR"))
if right(server_ip,8) = "194.165." then
response.write "禁止重叠提交194.165."
response.End()
end if

1、判断该发布信息是否有可靠的来路。只要是自然人发布的,那么他一定是通过我们提供给用户的提交页过来的,一定有一个来路;如果是机器发布的,就不会有来路信息。
'判断来路,禁止外部提交


代码如下:

dim server_v1,server_v2
server_v1=Cstr(Request.ServerVariables("HTTP_REFERER"))
server_v2=Cstr(Request.ServerVariables("SERVER_NAME"))
if server_v1="" or instr(server_v1,"/add.asp")<=0 or mid(server_v1,8,len(server_v2))<>server_v2 then
response.write "<SCRIPT language=JavaScript>alert('来源非法,禁止外部提交!');"
response.write "this.location.href='vbscript:history.back()';</SCRIPT>"
response.end
end if

注意,上面的/add.asp就是提交页面来源页。当然,机器也可以伪造来路,这就要结合以下方式一起对付了。
2、验证码。验证码一直是对付机器垃圾留言的一个可行的方法。不同的验证码有不同的对付机器留言的能力,越复杂的验证码,机器越难破解。这需要在考虑用户的感受和对付机器之间选择一个平衡点。关于验证码的使用方法,我就不多说了,谷歌、百度里搜索下就会出现很多介绍。
3、判断来源提交的时间。如果在提交页停留的时间太短,比如20秒,一般只要是个人,他打字的时间都不必这个少。举例说明,在用户打开页面(如add.asp)的时候,我们记下这个时间,在form提交表单里增加一个隐藏对象,如:
<input name="intime1" type="hidden" value="<%=Now()%>">
然后,当用户写好留言评论后提交到具体处理页面(如addok.asp)的时候,我们获取当前时间,和add.asp里的这个intime1时间比较,如果这个时间差小于设定的时间,如20秒,则禁止留言,判断为机器。代码可这样写:


代码如下:

If DateDiff("s",request.form("intime1"), Now()) < 20 then
response.write "<SCRIPT language=JavaScript>alert('您的留言速度太快了吧,禁止留言!');"
response.write "this.location.href='vbscript:history.back()';</SCRIPT>"
response.end
end if

通过以上三种方法可以屏蔽掉绝大部分的机器垃圾留言评论,如果还有大量的留言的话,那多半是人肉留言了。但是,我们又如何对付人肉留言呢?flymorn也提供方法对付。
方法很简单,就是通过记录用户的cookies以及IP来限制同一用户发表留言的数量。比如一天24小时内,只允许同一用户发表信息5条。我们可以通过以下方法实现。


代码如下:

<%'当用户每提交一次
if request.cookies("postnum")="" then
response.cookies("postnum")=1
response.cookies("postnum").expires=DateAdd("h", 24, Now())
else
response.cookies("postnum")=request.cookies("postnum")+1
end if
if request.cookies("postnum") > 5 then
response.write "<SCRIPT language=JavaScript>alert('今天留言次数超过限制,禁止留言!');"
response.write "this.location.href='vbscript:history.back()';</SCRIPT>"
response.end
end if
%>

通过以上的限制,人工发帖也得到了一定的限制。上面的方法是基于cookies判断,当然用户可以通过浏览器清空COOKIES,但这样增加了他们发垃圾帖子的难度,提高了门槛。我们还可以继续判断发布者的IP,通过同一个IP下发帖限制数量来达到我们的目的。在此,就不再扩展,大家可以自己设计如何判断IP来限制发帖的方法。如果您对本文讨论的主题有看法或建议,欢迎留下评论,以便我们一起探讨。

(0)

相关推荐

  • 本人ajax留言板的源程序 不错的应用js

    复制代码 代码如下: // JavaScript Document function $(id) {     return document.getElementById(id);     } function echo(obj,html) {     $(obj).innerHTML=html; } function fopen(obj) {     $(obj).style.display=""; } function fclose(obj) {     $(obj).style.

  • 来自经典的打造简单的PHP&MYSQL留言板第1/4页

    表一: admin 字段: id(int11)   name(varchvr)   password(varchvr) 表二: lo 字段: id(int11)   username(varchvr)  sex(varchvr)  qq(varchvr)  email(varchvr)  info(text)  ip(varchvr)  submit_time(datetime) 1.conn.php(连接数据库文件) 复制代码 代码如下: <?php  mysql_connect("lo

  • 如何使用Android实现接口实信息在留言板显示

    下面通过图文并茂的方式给大家分享下如何使用Android实现接口实信息在留言板显示. 看到标题,顾名思义,我今天只是和大家讲一下如何实现接口信息的显示,不包括添加信息. 接口帮助文档:http://api.wzhospital.cn/msg/help 根据查看接口文档,我们可以知道接口内部的一些信息结构. 当然,想要查看具体的信息,是通过此链接:http://api.wzhospital.cn/MSG/api/Message/GetList 获取以下信息,来验证显示的正确性. <Messages

  • asp简单的ajax留言板

    复制代码 代码如下: <%@ codepage=65001%> <% option explicit %> <% Response.Charset="utf-8"%> <% Session.CodePage=65001 %> <!-- #include file="AccHelper.asp" --> <!-- #include file="Common.asp"--> &l

  • asp简单的ajax留言板(采用三层模式)

    好久没有写过asp了,这回写个留言板还真觉得有点难度,竞然写了整整一天,哈哈.就只有留言其它的都什么也没写,采用三层结构(不知道算不算,本来对三层的概念很糊涂) 演示www.zj55.com的留言板,希望各位大哥大姐如果发现有漏洞的话请在这里告诉我,千万不要黑我的网站,在这里小弟先谢过了. index.asp<%@ codepage=65001%><%option explicit%><% Response.Charset="utf-8"%><

  • php xml留言板 xml存储数据的简单例子

    类文件 : _class.xmldb.inc.php 复制代码 代码如下: <?php class xmldb extends DOMDocument{     var $xmldb;     public function __construct($xmldbname){         $this->xmldb=$xmldbname;         if(!file_exists($this->xmldb)){             $initxmldb = "<

  • JS+CSS模拟可以无刷新显示内容的留言板实例

    本文实例讲述了JS+CSS模拟可以无刷新显示内容的留言板功能.分享给大家供大家参考.具体实现方法如下: 复制代码 代码如下: <!DOCTYPE html PUBLIC "-//W3C//h2D XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/h2D/xhtml1-transitional.h2d"> <html xmlns="http://www.w3.org/1999/

  • ASP+XML留言板介绍

    我开始学习xml时做了一个简单的xml留言板. ------------------------------- 创建一个新的XMLDOM object server.createObject("Microsoft.XMLDOM") -------------------------------- 加载一个xml文件 set objXML=server.createObject("Microsoft.XMLDOM") filepath=server.mappath(&

  • ASP开发基于XML的留言板

    XML(Extensible Markup Language)是一种基于文本格式的标记语言,它注重对数据结构和数据意义的描述,实现了数据内容和显示样式的分离,而且是与平台无关的.由于XML注重数据内容的描述,因而,对于数据的检索非常有意义,我们不会再象HTML那样,检索出与我们要求无关的信息.另一方面,XML文件是数据的载体,利用XML作为数据库,不需要访问任何数据库系统,我们可以使用任意WEB技术来显示我们的数据,比如HTML,Flash 5 等.由于世界各大计算机公司的积极参与,XML正日益

  • 利用XML开发留言板简单的例子

    XML是一种基于文本格式的元标记语言,它注重对数据结构和数据意义的描述,实现了数据内容和显示样式的分离(xml+xsl),而且是与平台无关的. 由于XML注重数据内容的描述,因而,对于数据的检索非常有意义,我们不会再象HTML那样,检索出与我们要求无关的信息. 另一方面,XML文件是数据的载体,利用XML作为数据库,不需要访问任何数据库系统,我们可以使用任意WEB技术来显示我们的数据,比如HTML,FlashMX 等. 由于世界各大计算机公司的积极参与,XML正日益成为基于互联网的数据格式新一代

随机推荐