ASP网页编程之用ASP统计用户在站点的停止工夫(1)
无法实现跨操作系统的应用。当然这也是微软的理由之一,只有这样才能发挥ASP最佳的能力。可是我却认为正是Windows限制了ASP,ASP的概念本就是为一个能让系统运行于一个大的多样化环境而设计的;固然一般利用的点击注册手艺能够盘算出你的Web站点失掉几点击,可是,假如可以晓得会见者在站点上停止了多长工夫就更好了。假如有上千人点击并翻开了你的主页,但他们却在大度的“接待”图形完整下载之前就已跑到其余站点往了,如许,你所花在建立和保护站点上的投资就没有失掉很好的报答。
有两种很好的办法用来纪录用户在你的站点上消费了几工夫。第一个是利用基于ASP服务器的sessions,第二是经由过程坚持客户机端cookies。要记着,利用sessions将给服务器的处置事情增添负荷,可是它们的确供应了最简便的办法。另有一点要注重,那就是假如用户真个扫瞄器不克不及撑持cookie功效,那末这两种办法都不克不及事情。
ASPSession手艺
利用ASPSession是请求你把这个session入手下手确当前工夫保留成谁人用户的session级别变量,这将要用到你的站点或假造路径下的global.asa文件中的Session_onStart事务句柄。然后,在Session_onEnd事务句柄中,你就能够盘算出session延续的工夫,并将这个了局写到日记文件或数据库中。在这里的例子中利用了日记文件:
<scriptlanguage="VBScript"runat="server">
SubSession_onStart()
savethetimethatthesessionstarted
Session("StartTime")=Now()
EndSub
SubSession_onEnd()
getthetimethattheuserlastloadedapage
assumesthedefaultsessiontimeoutof20minutes
OnErrorResumeNext
setpathandnameoflogfiletobecreated
edittosuityourownmachinedirectorylayout
remembertogivethedirectoryWriteorFull
ControlpermissionfortheIUSR_machineaccount
strFileName="C:Tempvisit_lengths.txt"
datStartTime=Session("StartTime")
datEndTime=DateAdd("n",-20,Now())
intMinutes=DateDiff("n",datStartTime,datEndTime)
IfintMinutes>0Then
gotavalidtimesoaddittothelogfile
strInfo="Visitendingat"&datEndTime_
&"lastedfor"&intMinutes&"minute(s)."
addusernametothelogentrystringhereifrequired
strInfo=strInfo&"Username:"&strUserName
SetobjFileObject=Server.CreateObject("Scripting.FileSystemObject")
opentextfiletoappenddata(theForAppendingconstant=8)
SetobjFile=objFileObject.OpenTextFile(strFileName,8,True)
objFile.WriteLinestrInfo
objFile.Close
EndIf
EndSub
</script>
你能够看到,当session停止时,我们从以后工夫中减往了session的timeout的数值,假如思索到用户装载最初一页时所消费的工夫,减往的值能够略微小一点。这个数目由你往猜,由于用这个手艺其实不能测出实践值。
注重,假如你在任何页面中利用了ASP的Session.Abandon办法,就不克不及失掉准确的了局。由于这类办法当即中止session,如许,从实践工夫中减往session长度就会给出一个不准确的会见工夫(偶然候乃至是正数)。更糟的是,在ASP2.0版本中,这类办法还常常完全不克不及启动Session_OnEnd事务。
在某些站点上利用一种“中断服务器操纵”的链接来启动Session.Abandon办法,可是依据履历,很少有效户会往点击它。他们只是转到另外一个站点,让session自行中止。
这是我们从日记文件中失掉的一些纪录:
Visitendingat6/5/001:05:26AMlastedfor2minute(s).
Visitendingat6/5/001:06:14AMlastedfor47minute(s).
Visitendingat6/5/001:12:18AMlastedfor22minute(s).
Visitendingat6/5/001:29:54AMlastedfor9minute(s).
假如用户会见的工夫少于1分钟(好比说,他们的session入手下手后过了1分钟还没能装载另外一页),用我们的代码就不显现在列表中。从全部session长度中减往这个session的timeout,就会失掉0,在这一点我们的代码就将其舍弃:
IfintMinutes>0Then?
固然你能够修正代码以顺应本人的必要。
注重:要记着session停止后才入手下手写日记文件的条目。你不克不及立即看到它们。假如想试着更快地看到了局,能够在页面上修正Session.Timeout的属性。
在数据库中纪录了局
要将盘算的了局纪录数据库中而不是日记文件中,能够创立一个得当的SQLINSERT声明,实行它来更新一个你已供应的数据库表:
...
strSQL="INSERTINTOYourTable(UserName,SessionEnd,"_
&"SessionLength)VALUES("&strUserName&",#"_
&datEndTime&"#,"&intMinutes&")"
SetoConn=Server.CreateObject("ADODB.Connection")
oConn.open"DSN=yourdsn;UID=username;PWD=password;"
oConn.ExecutestrSQL
SetoConn=Nothing
...
asp,jsp,php是web开发的三大技术,asp简单易用且有microsoft做靠山,jsp功能强大是因为有java支持,php则开源跨平台.在国内,asp应用范围最广,jsp发展势头最猛,php则处于劣势.这可能与公司的支持以及技术的培训有关. ASP(ActiveServerPages)是Microsfot公司1996年11月推出的WEB应用程序开发技术,它既不是一种程序语言,也不是一种开发工具,而是一种技术框架,不须使用微软的产品就能编写它的代码,能产生和执行动态、交互式、高效率的站占服务器的应用程序。 以上是语言本身的弱点,在功能方面ASP同样存在问题,第一是功能太弱,一些底层操作只能通过组件来完成,在这点上是远远比不上PHP/JSP,其次就是缺乏完善的纠错/调试功能,这点上ASP/PHP/JSP差不多。 Response:从字面上讲是“响应”,因此这个是服务端向客户端发送东西的,例如Response.Write 如何学好ASP,以前也有人问过,把回答给你转过来看看能否对你有帮助: 以HTML语言整合(HTML负责界面上,ASP则负责功能上)形成一个B/S(浏览器/服务器)模式的网页程序。 用户端的浏览器不需要提供任何别的支持,这样大提高了用户与服务器之间的交互的速度。 作为IE上广为流传的动态网页开发技术,ASP以它简单易学博得了广大WEB程序爱好这的青睐,而且它对运行环境和开发品台的不挑剔,以及有大量有效的参考手册,极大的推广了它的发展。 我就感觉到ASP和一些常用的数据库编程以及软件工程方面的思想是非常重要的。我现在也在尝试自己做网页,这其中就用到了ASP,我想它的作用是可想而知的。 运用ASP可将VBscript、javascript等脚本语言嵌入到HTML中,便可快速完成网站的应用程序,无需编译,可在服务器端直接执行。容易编写,使用普通的文本编辑器编写,如记事本就可以完成。由脚本在服务器上而不是客户端运行,ASP所使用的脚本语言都在服务端上运行。 ASP也是这几种脚本语言中最简单易学的开发语言。但ASP也是这几种语言中唯一的一个不能很好支持跨平台的语言。 因为ASP脚本语言非常简单,因此其代码也简单易懂,结合HTML代码,可快速地完成网站的应用程序。
页:
[1]