一在表單填寫頁面: <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來限制發帖的方法如果您對本文討論的主題有看法或建議歡迎留下評論以便我們一起探討
From:http://tw.wingwit.com/Article/program/net/201311/14093.html