人人做人人澡人人爽欧美,国产主播一区二区,久久久精品五月天,羞羞视频在线观看免费

當前位置:蘿卜系統(tǒng)下載站 > 技術開發(fā)教程 > 詳細頁面

防范網(wǎng)上重復投票的辦法(一)

防范網(wǎng)上重復投票的辦法(一)

更新時間:2021-04-20 文章作者:未知 信息來源:網(wǎng)絡 閱讀次數(shù):

網(wǎng)上調(diào)查是快速收集信息的有效方法,但是目前部分網(wǎng)站的網(wǎng)上調(diào)查存在一個不足之處,即任何用戶根據(jù)自己的愛好可以連續(xù)反復投票。因為所有的調(diào)查結果都是為決策作參考,不管對一個單位還是一個部門,決策失誤都會帶來意想不到的損失,所以防止重復投票具有重要意義。本文所給出的基于ASP(Active Server Page)的幾種方法在一定程度上可以防止連續(xù)反復投票。

ASP對象
在ASP中有5個對象:Request、Response、Session、 Application、Server。下面只針對本文能用到的對象屬性進行說明,其他方面的屬性請參考相關資料。本文提供的方法的原理是:設置一個邏輯變量IsVoted,在投票之前驗證IsVoted 的值,只有值為False時,才能投票,否則就認為已投過票。
Application對象是處理某一特定ASP應用中所有用戶共享信息的對象,也就是說Application對象是所有聯(lián)網(wǎng)機器上所有網(wǎng)頁所共享的對象。由 Application對象所定義和設置的變量,所有用戶的所有網(wǎng)頁均可訪問。利用Application對象可以定義變量以及改變變量的值,其語法格式如下: Application(“變量名”)=表達式。在.asp 文件中可通過Application(“變量名”)加以引用。Application把變量的值保存在Web Server 端。

Session對象用于單個用戶管理信息,Session變量只在頁面間調(diào)用(即在一個Session內(nèi))。Session變量是私有的,一個Session中某個變量值的改變不影響另一個Session中同名變量的值。Session對象也把變量值保存在服務器端,但是各個Session保存的位置不同。因為Session是私有的,所以有多少個Session對象就存在多少個IsVoted變量,這些變量之間沒有關系。

Cookies對象是不能單獨存在的,它依附于Request和 Response對象,在使用時必須在Cookies前加上Request或Response。同Application和Session 一樣,Cookies也能保存變量的值,但是Cookies只在瀏覽器客戶端保存變量的值。用Cookies 所定義的變量有一個屬性:可以設置Cookies變量的使用期限,而且一旦設置了使用期限, Cookies變量可以被從同一臺機器上登錄的所有用戶所共享,我們可以利用Cookies的這個屬性設置間隔一定時間才能再次投票。

Server對象主要完成一些需要WWW服務器處理的工作,本文中我們主要利用Request.ServerVariables讀取Server的環(huán)境變量中客戶端的IP地址,并根據(jù)IP地址來設定相隔多長時間同一IP地址才能再次投票。

Global.asa文件完成共享變量和文件的定義及初始化任務。Global.asa文件必須位于ASP應用的根目錄下,一個ASP應用只能有一個Global.asa文件。Global.asa中含有Application_OnStart、Application_OnEnd、Session_OnStart、 Session_OnEnd四個事件,我們在Application_OnStart、Session_OnStart事件中定義 Application變量和Session變量以及進行初始化,這樣在以后的網(wǎng)頁中就可以讀取這些變量。 ASP在下列情況下讀取Global.asa內(nèi)容:

1.在Web Server啟動之后,第一次請求調(diào)用ASP應用中的任何.asp文件時;

2.不在Session狀態(tài)的用戶請求調(diào)用ASP應用的.asp文件。

方法一:利用Session對象
在Global.asa的Session_OnStart事件中設置邏輯變量 IsVoted,初始值為FALSE(表示還沒有投票),投票之后在.asp程序中把IsVoted的值改為TRUE(表示已投過票)。每次投票之前都要判斷IsVoted的值。如果IsVoted的值為TRUE,就不能再投票;如果值為FALSE,則可以投票。
因為Session對象的使用必須與瀏覽器的Cookies功能相配合,所以在判斷IsVoted值之前,必須先判斷瀏覽器的Cookies功能是否打開。如處于關閉狀態(tài),則此種方法失效,所以在這種情況下必須給出提示信息并用Response.End命令中斷.asp程序的執(zhí)行,防止連續(xù)反復投票。其流程如圖1:




其中判斷Cookies是否打開的函數(shù)比較復雜,現(xiàn)給出函數(shù)實現(xiàn)代碼(VBScript)。

< %
Function IsCookiesOpen()
Dim ClientIP, URL, QueryString, IsNew

Application.Lock
If Session(“SessionID")=Session.SessionID Then
IsCookiesOpen = True
ClearApp
Exit Function
End If

IsNew = False
If Session(“SessionID") = Empty Then
CurrentIP =Request.ServerVariables
(“REMOTE_ADDR")
If CurrentIP <> Application(“IP") Then
ClearApp
IsNew = True
End If
End If
If Not IsNew And Application(“Visit") >= 1 Then
IsCookiesOpen = False
ClearApp
Exit Function
End If
Application(“Visit") = Application(“Visit") + 1
Application(“IP") =Request.ServerVariables
(“REMOTE_ADDR")
Session(“SessionID") = Session.SessionID

URL =“_page_=”&Request.ServerVariables
(“PATH_INFO")
QueryString=Request.ServerVariables
(“QUERY_STRING")
If Len(QueryString) > 0 Then URL = URL & “&" & QueryString
If Not Response.IsClientConnected Then ClearApp
End Function

Sub ClearApp()
Application(“Visit") = 0
Application(“IP") = “"
End Sub
% >

在.asp文件中直接用IsCookiesOpen()函數(shù)來判定 Cookies是否打開。

此種方法的漏洞:如果再打開一個新瀏覽器窗口,會發(fā)現(xiàn)在新打開的瀏覽器窗口中仍然可以投票。這是因為Session是私有的,一個Session中變量的改變并不影響另一個Session的同名變量的值。為了解決這個問題,下面給出方法二。

溫馨提示:喜歡本站的話,請收藏一下本站!

本類教程下載

系統(tǒng)下載排行

網(wǎng)站地圖xml | 網(wǎng)站地圖html
主站蜘蛛池模板: 绥宁县| 闻喜县| 东安县| 革吉县| 祁阳县| 邯郸市| 德庆县| 青河县| 灵山县| 保靖县| 宣恩县| 江北区| 桂平市| 饶河县| 玉田县| 类乌齐县| 深水埗区| 新民市| 江达县| 平和县| 玉环县| 永川市| 郯城县| 新乐市| 治县。| 宾阳县| 革吉县| 雅江县| 红安县| 富宁县| 应用必备| 汶上县| 南溪县| 尖扎县| 万载县| 沾益县| 罗江县| 高要市| 汉川市| 建宁县| 宁城县|