一在表单填写页面: <input name="intime" type="hidden" value="<%=Now()%>">
在提交处理页面设置提交时间
代码如下:
If DateDiff("s"requestform("intime") Now()) < then
responsewrite "<SCRIPT language=JavaScript>alert(您的留言速度太快禁止留言!);"
responsewrite "thislocationvbscript:historyback();</SCRIPT>"
responseend
end if
二验证码
代码如下:
yz=cstr(requestForm("yz"))
yz=cstr(session("yz"))
if yz<>yz then
ResponseWrite("<script language=javascript>alert(请正确输入验证码!);</script>")
responseredirect("signasp")
end if
三判断来路
代码如下:
server_v=Cstr(RequestServerVariables("HTTP_REFERER"))
ResponseWrite(server_v)
server_v=Cstr(RequestServerVariables("SERVER_NAME"))
ResponseWrite(server_v)
if mid(server_vlen(server_v))<>server_v then
ResponseWrite("<script language=javascript>alert(禁止外部提交数据!);</script>")
responseend
end if
四设置每日提交次数
代码如下:
当用户每提交一次
if requestcookies("postnum")="" then
responsecookies("postnum")=
responsecookies("postnum")expires=DateAdd("h" Now())
else
responsecookies("postnum")=requestcookies("postnum")+
end if
if requestcookies("postnum") > then
responsewrite "<SCRIPT language=JavaScript>alert(今天留言次数超过限制禁止留言!);"
responsewrite "thislocationvbscript:historyback();</SCRIPT>"
responseend
end if
五禁止IP
代码如下:
server_ip=Cstr(RequestServerVariables("REMOTE_ADDR"))
if right(server_ip) = "" then
responsewrite "禁止重叠提交"
responseEnd()
end if
判断该发布信息是否有可靠的来路只要是自然人发布的那么他一定是通过我们提供给用户的提交页过来的一定有一个来路如果是机器发布的就不会有来路信息
判断来路禁止外部提交
代码如下:
dim server_vserver_v
server_v=Cstr(RequestServerVariables("HTTP_REFERER"))
server_v=Cstr(RequestServerVariables("SERVER_NAME"))
if server_v="" or instr(server_v"/addasp")<= or mid(server_vlen(server_v))<>server_v then
responsewrite "<SCRIPT language=JavaScript>alert(来源非法禁止外部提交!);"
responsewrite "thislocationvbscript:historyback();</SCRIPT>"
responseend
end if
注意上面的/addasp就是提交页面来源页当然机器也可以伪造来路这就要结合以下方式一起对付了
验证码验证码一直是对付机器垃圾留言的一个可行的方法不同的验证码有不同的对付机器留言的能力越复杂的验证码机器越难破解这需要在考虑用户的感受和对付机器之间选择一个平衡点关于验证码的使用方法我就不多说了谷歌百度里搜索下就会出现很多介绍
判断来源提交的时间如果在提交页停留的时间太短比如秒一般只要是个人他打字的时间都不必这个少举例说明在用户打开页面(如addasp)的时候我们记下这个时间在form提交表单里增加一个隐藏对象如
<input name="intime" type="hidden" value="<%=Now()%>">
然后当用户写好留言评论后提交到具体处理页面(如addokasp)的时候我们获取当前时间和addasp里的这个intime时间比较如果这个时间差小于设定的时间如秒则禁止留言判断为机器代码可这样写
代码如下:
If DateDiff("s"requestform("intime") Now()) < then
responsewrite "<SCRIPT language=JavaScript>alert(您的留言速度太快了吧禁止留言!);"
responsewrite "thislocationvbscript:historyback();</SCRIPT>"
responseend
end if
通过以上三种方法可以屏蔽掉绝大部分的机器垃圾留言评论如果还有大量的留言的话那多半是人肉留言了但是我们又如何对付人肉留言呢?flymorn也提供方法对付
方法很简单就是通过记录用户的cookies以及IP来限制同一用户发表留言的数量比如一天小时内只允许同一用户发表信息条我们可以通过以下方法实现
代码如下:
<%当用户每提交一次
if requestcookies("postnum")="" then
responsecookies("postnum")=
responsecookies("postnum")expires=DateAdd("h" Now())
else
responsecookies("postnum")=requestcookies("postnum")+
end if
if requestcookies("postnum") > then
responsewrite "<SCRIPT language=JavaScript>alert(今天留言次数超过限制禁止留言!);"
responsewrite "thislocationvbscript:historyback();</SCRIPT>"
responseend
end if
%>
通过以上的限制人工发帖也得到了一定的限制上面的方法是基于cookies判断当然用户可以通过浏览器清空COOKIES但这样增加了他们发垃圾帖子的难度提高了门槛我们还可以继续判断发布者的IP通过同一个IP下发帖限制数量来达到我们的目的在此就不再扩展大家可以自己设计如何判断IP来限制发帖的方法如果您对本文讨论的主题有看法或建议欢迎留下评论以便我们一起探讨