蒙在股里 发表于 2015-2-3 23:39:23

ASP教程之避免网上反复投票的办法(一)

ASP最大的缺点在于网络的安全性和可靠性,企业将经营数据放在开放的平台上,最大的担忧就是如何保证这些数据不被其他人破坏。投票|反复   网上查询拜访是疾速搜集信息的无效办法,然而今朝局部网站的网上查询拜访存在一个缺乏的地方,即任何用户依据本人的喜好可以一连重复投票。由于一切的查询拜访了局都是为决议计划作参考,不论对一个单元仍是一个部分,决议计划掉误城市带来意想不到的丧失,所以避免反复投票具有主要意义。本文所给出的基于ASP(Active Server Page)的几种办法在必定水平上可以避免一连重复投票。

ASP对象
在ASP中有5个对象:Request、Response、Session、 Application、Server。上面只针对本文能用到的对象属性停止申明,其他方面的属性请参考相干材料。本文供应的办法的道理是:设置一个逻辑变量IsVoted,在投票之前验证IsVoted 的值,只要值为False时,才干投票,不然就以为已投过票。
Application对象是处置某一特定ASP使用中一切用户同享信息的对象,也就是说Application对象是一切联网机械上一切网页所同享的对象。由 Application对象所界说和设置的变量,一切用户的一切网页都可会见。使用Application对象可以界说变量和改动变量的值,其语法格局以下: Application(“变量名”)=表达式。在.asp 文件中可经由过程Application(“变量名”)加以援用。Application把变量的值保留在Web Server 端。

Session对象用于单个用户办理信息,Session变量只在页面间挪用(即在一个Session内)。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的情况变量中客户真个IP地址,并依据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变量和停止初始化,如许在今后的网页中就能够读取这些变量。 ASP鄙人列情形下读取Global.asa内容:

1.在Web Server启动以后,第一次恳求挪用ASP使用中的任何.asp文件时;

2.不在Session形态的用户恳求挪用ASP使用的.asp文件。

办法一:使用Session对象
在Global.asa的Session_OnStart事务中设置逻辑变量 IsVoted,初始值为FALSE(暗示还没有投票),投票以后在.asp法式中把IsVoted的值改成TRUE(暗示已投过票)。每次投票之前都要判别IsVoted的值。假如IsVoted的值为TRUE,就不克不及再投票;假如值为FALSE,则可以投票。
由于Session对象的利用必需与阅读器的Cookies功效相共同,所以在判别IsVoted值之前,必需先判别阅读器的Cookies功效是不是翻开。如处于封闭形态,则此种办法生效,所以在这类情形下必需给出提醒信息并用Response.End号令中止.asp法式的履行,避免一连重复投票。其流程如图1:




个中判别Cookies是不是翻开的函数对照庞杂,现给出函数完成代码(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()函数来剖断 Cookies是不是翻开。

此种办法的破绽:假如再翻开一个新阅读器窗口,会发明在新翻开的阅读器窗口中依然可以投票。这是由于Session是公有的,一个Session中变量的改动其实不影响另外一个Session的同名变量的值。为懂得决这个成绩,上面给出办法二。
</p>楼上说交互性不好,太牵强了吧。在微软提供的一套框架中,利用asp做网站,开发效率高,使用人数少,减少不必要的开销。交互性是互动方式,是有开发人员决定的。

柔情似水 发表于 2015-2-4 04:52:57

运用ASP可将VBscript、javascript等脚本语言嵌入到HTML中,便可快速完成网站的应用程序,无需编译,可在服务器端直接执行。容易编写,使用普通的文本编辑器编写,如记事本就可以完成。由脚本在服务器上而不是客户端运行,ASP所使用的脚本语言都在服务端上运行。

再现理想 发表于 2015-2-4 13:41:05

Response:从字面上讲是“响应”,因此这个是服务端向客户端发送东西的,例如Response.Write

莫相离 发表于 2015-2-5 11:31:27

你可以通过继承已有的对象最大限度保护你以前的投资。并且C#和C++、Java一样提供了完善的调试/纠错体系。

分手快乐 发表于 2015-2-9 23:08:22

以HTML语言整合(HTML负责界面上,ASP则负责功能上)形成一个B/S(浏览器/服务器)模式的网页程序。

不帅 发表于 2015-2-28 04:18:49

用户端的浏览器不需要提供任何别的支持,这样大提高了用户与服务器之间的交互的速度。

愤怒的大鸟 发表于 2015-3-8 00:02:21

不是很难但是英文要有一点基础网上的教程很少有系统的详细的去买书吧,另不用专门学习vb关于vbscript脚本在asp教材都有介绍

谁可相欹 发表于 2015-3-15 17:29:58

Application:这个存储服务端的数据,如果不清除,会直到web应用程序结束才清除(例如重启站点)

山那边是海 发表于 2015-3-16 19:36:46

我就感觉到ASP和一些常用的数据库编程以及软件工程方面的思想是非常重要的。我现在也在尝试自己做网页,这其中就用到了ASP,我想它的作用是可想而知的。

小魔女 发表于 2015-3-22 04:09:31

Application:这个存储服务端的数据,如果不清除,会直到web应用程序结束才清除(例如重启站点)

灵魂腐蚀 发表于 2015-3-24 23:34:57

接下来就不能纸上谈兵了,最好的方法其实是实践。实践,只能算是让你掌握语言特性用的。而提倡做实际的Project也不是太好,因为你还没有熟练的能力去综合各种技术,这样只能使你自己越来越迷糊。

飘灵儿 发表于 2015-4-10 15:28:48

用户端的浏览器不需要提供任何别的支持,这样大提高了用户与服务器之间的交互的速度。

变相怪杰 发表于 2015-4-13 23:26:28

Application:这个存储服务端的数据,如果不清除,会直到web应用程序结束才清除(例如重启站点)

海妖 发表于 2015-4-16 14:09:22

他的语法和设计思路和VB完全相同,导致很多ASP的书都留一句“相关内容请参考VB的相关教材....”更糟糕的是,相当多的ASP教程混合了Javascript,VBscript等等脚本语言,搞的初学者。

若天明 发表于 2015-4-21 15:16:47

我想问如何掌握学习节奏(先学什么再学什么)最好详细点?

admin 发表于 2015-4-25 20:16:25

运用经典的例子。并且自己可以用他来实现一些简单的系统。如果可以对他进行进一步的修改,找出你觉得可以提高性能的地方,加上自己的设计,那就更上一个层次了,也就会真正地感到有所收获。

第二个灵魂 发表于 2015-4-26 04:11:53

从事这个行业,那么你可以学ASP语言,简单快速上手,熟练dreamweav排版,写asp代码,熟练photoshop处理图片,打好基础就行了

只想知道 发表于 2015-4-26 17:10:47

我想问如何掌握学习节奏(先学什么再学什么)最好详细点?

精灵巫婆 发表于 2015-4-30 23:32:29

那么,ASP.Net有哪些改进呢?

乐观 发表于 2015-5-1 10:36:09

ASP主要是用好六个对象,其实最主要的是用好其中两个:response和request,就可以随心所欲地控制网页变换和响应用户动作了。
页: [1]
查看完整版本: ASP教程之避免网上反复投票的办法(一)