asp有效防止網(wǎng)站留言板出現(xiàn)垃圾留言/評論實(shí)現(xiàn)思路_ASP教程

      編輯Tag賺U幣
      教程Tag:暫無Tag,歡迎添加,賺取U幣!

      推薦:ASP中DateAdd函數(shù)日期使用
      ASP中DateAdd函數(shù)用法 2006/09/22 12:29 注意vbs中和sql中寫法略有不同,以下帖出的為vbs幫助。 sql的可搜索sql自帶幫助文檔 字符串表達(dá)式,表示要添加的時(shí)間間隔。有關(guān)數(shù)值,請參閱設(shè)置部分。 返回已添加指定時(shí)間間隔的日期。 DateAdd(interval, number, date) 參數(shù) in

      一.在表單填寫頁面: <input name="intime1" type="hidden" value="<%=Now()%>">
      在提交處理頁面,設(shè)置提交時(shí)間
      代碼如下:
      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

      二.驗(yàn)證碼
      代碼如下:
      yz=cstr(request.Form("yz"))
      yz1=cstr(session("yz1"))
      if yz1<>yz then
      Response.Write("<script language=javascript>alert('請正確輸入驗(yàn)證碼!');</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('禁止外部提交數(shù)據(jù)!');</script>")
      response.end
      end if

      四.設(shè)置每日提交次數(shù)
      代碼如下:
      '當(dāng)用戶每提交一次
      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('今天留言次數(shù)超過限制,禁止留言!');"
      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、判斷該發(fā)布信息是否有可靠的來路。只要是自然人發(fā)布的,那么他一定是通過我們提供給用戶的提交頁過來的,一定有一個(gè)來路;如果是機(jī)器發(fā)布的,就不會有來路信息。
      '判斷來路,禁止外部提交
      代碼如下:
      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就是提交頁面來源頁。當(dāng)然,機(jī)器也可以偽造來路,這就要結(jié)合以下方式一起對付了。
      2、驗(yàn)證碼。驗(yàn)證碼一直是對付機(jī)器垃圾留言的一個(gè)可行的方法。不同的驗(yàn)證碼有不同的對付機(jī)器留言的能力,越復(fù)雜的驗(yàn)證碼,機(jī)器越難破解。這需要在考慮用戶的感受和對付機(jī)器之間選擇一個(gè)平衡點(diǎn)。關(guān)于驗(yàn)證碼的使用方法,我就不多說了,谷歌、百度里搜索下就會出現(xiàn)很多介紹。
      3、判斷來源提交的時(shí)間。如果在提交頁停留的時(shí)間太短,比如20秒,一般只要是個(gè)人,他打字的時(shí)間都不必這個(gè)少。舉例說明,在用戶打開頁面(如add.asp)的時(shí)候,我們記下這個(gè)時(shí)間,在form提交表單里增加一個(gè)隱藏對象,如:
      <input name="intime1" type="hidden" value="<%=Now()%>">
      然后,當(dāng)用戶寫好留言評論后提交到具體處理頁面(如addok.asp)的時(shí)候,我們獲取當(dāng)前時(shí)間,和add.asp里的這個(gè)intime1時(shí)間比較,如果這個(gè)時(shí)間差小于設(shè)定的時(shí)間,如20秒,則禁止留言,判斷為機(jī)器。代碼可這樣寫:
      代碼如下:
      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

      通過以上三種方法可以屏蔽掉絕大部分的機(jī)器垃圾留言評論,如果還有大量的留言的話,那多半是人肉留言了。但是,我們又如何對付人肉留言呢?flymorn也提供方法對付。
      方法很簡單,就是通過記錄用戶的cookies以及IP來限制同一用戶發(fā)表留言的數(shù)量。比如一天24小時(shí)內(nèi),只允許同一用戶發(fā)表信息5條。我們可以通過以下方法實(shí)現(xiàn)。
      代碼如下:
      <%'當(dāng)用戶每提交一次
      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('今天留言次數(shù)超過限制,禁止留言!');"
      response.write "this.location.href='vbscript:history.back()';</SCRIPT>"
      response.end
      end if
      %>

      分享:ASP獲取地址欄URL地址方法
      如果要想獲取這樣的地址:http://192.168.0.5/super/super_article.asp?id=4 那么我們就只要獲取: 192.168.0.5---%=Request.ServerVariables(HTTP_HOST)%br /super/super_article.asp-----%=Request.ServerVariables(URL)%br id=4----%=Request.ServerVariables(QUERY

      共2頁上一頁12下一頁
      來源:模板無憂//所屬分類:ASP教程/更新時(shí)間:2013-04-17
      相關(guān)ASP教程