国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > ASP > 正文

asp有效防止網站留言板出現垃圾留言/評論實現思

2024-05-04 11:08:02
字體:
來源:轉載
供稿:網友
如何有效防止網站(留言板)出現垃圾留言,垃圾評論?本文提供詳細解決思路與實現步驟,需要了解的朋友可以參考下
 
 
 
一.在表單填寫頁面: <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來限制發帖的方法。如果您對本文討論的主題有看法或建議,歡迎留下評論,以便我們一起探討。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 镇江市| 彭州市| 苏州市| 安陆市| 柳河县| 蒙城县| 阿坝县| 萍乡市| 岗巴县| 绥芬河市| 林州市| 苍南县| 安仁县| 南京市| 射阳县| 建平县| 娄底市| 衢州市| 长海县| 页游| 库车县| 扎囊县| 古丈县| 普洱| 全椒县| 镇巴县| 朔州市| 江陵县| 大庆市| 太仓市| 宜君县| 松阳县| 山东省| 夹江县| 玉门市| 河源市| 石阡县| 贵南县| 武鸣县| 泾阳县| 天祝|