用ASP统计用户在站点的停留时间(2)

2016-01-29 17:24 6 1 收藏

用ASP统计用户在站点的停留时间(2),用ASP统计用户在站点的停留时间(2)

【 tulaoshi.com - ASP 】

  然后你就可以用任何方式来使用这些数据了。你可以创建ASP页面来读取数据并将数据呈现给管理员,或者从数据库中将其复制到一个电子工作表中,有时间的时候再进行分析。

  但是要记住,使用ASP sessions会带来一些问题。在ASP 2.0中,当主应用程序目录下的嵌套目录中有global.asa 的副本时,有时sessions 会丢失。还有,如果你在URL、页面文件名以及页面之间的超级链接中使用字母的大小写不同的话,象Navigator那样的浏览器就把URL作为大小写敏感来对待,因此不把特殊的ASP session cookie发送回来,这样这种
方法的使用也是不可靠的。

  

“客户机端Cookie”技术
  使用客户机端Cookie也很容易。完成这一工作的代码可以放在一个ASP #include 文件中,然后将它插入到站点中用户肯定会去访问的主页面中。当然,如果愿意的话可以将其插入所有的页面。只要在用户访问的过程中它工作正常,就能给出正确的结果。

  设置了路径和日志文件名之后,代码定义一个子程序,将一个值附加到日志文件的,就象前面的“ASP Sessions”的例子一样。如果你愿意的话,可以取代我们使用的代码来更新一个数据库表而不是一个日志文件。

< %

'measure visit length with cookie



'set path and name of log file to be created

'edit to suit your own machine directory layout

'remember to give the directory Write or Full

'Control permission for the IUSR_machine account

strFileName = "C:Tempvisit_lengths.txt"



Sub UpdateLogFile(intVisitLength)

On Error Resume Next

If intVisitLength 0 Then

   'got a valid time so enter it into a log file

   strInfo = "Session ending at " & Now() _

     & " lasted for " & CStr(intVisitLength) & " minute(s)."

   'add user name to the log entry string here if required

   'strInfo = strInfo & " User name: " & strUserName

   Set objFileObject = Server.CreateObject("Scripting.FileSystemObject")

   'open text file to append data (the ForAppending constant = 8)

   Set objFile = objFileObject.OpenTextFile(strFileName, 8, True)

   objFile.WriteLine strInfo

   objFile.Close

   Set objFile = Nothing

   Set objFileObject = Nothing

End If

End Sub



读一个存在的Cookie
  现在我们可以进行实质性的工作了。代码的其余部分检查是否有一个现存的Cookie供这个用户使用,如果有的话就确认它包含有效的日期和时间(我们检查它必须是一个1990年之后的日期)。如果cookie是有效的,它随后检查自从这个用户装载最后一页(也就是他们执行这个代码的最后一次)是否已经过了30分钟以上。如果已经超过了30分钟,我们就把它算做一个新的访问,你可以根据你的站点和需求来修改这个值。

...

'get session start time from existing cookie if it exists

datStart = CDate(Request.Cookies("SiteVisits")("StartTime"))

If Year(datStart) 1990 Then

'cookie already exists, so get values

datLast = CDate(Request.Cookies("SiteVisits")("LastTime"))

If (DateDiff("n", datLast, Now()) 30) Then

   'more than 30 minutes since last visit so count as new visit

   'get length of last visit and update log file

   intMinutes = DateDiff("n", datStart, datLast)

   UpdateLogFile intMinutes

   ...

  这时,通过在页面的顶端执行UpdateLogFile子程序,我们已经存储了他们上一次访问的长度, 这是他们上次访问的分钟数。然后就可以把我们收集的两个值更新成当前的日期和时间,可以开始记录这次访问的长度了。

  要注意,30分钟过去之后才能看到表格中的任何条目。在试验时,你可以用一个较短的值来修改代码。



记录访问的时间长度
   ...

   'update values for cookie

   'use new start time and new 'last page load' time

   datStart = Now()

   datLast = Now()

Else

   ...

  如果自从最后一次执行这个代码的时间少于30分钟,我们把它算成是当前访问的一部分,因此我们只需要更新cookie中的值作为他们上次访问的时间:

   ...

   'less than 30 minutes since last visit so c

来源:https://www.tulaoshi.com/n/20160129/1501255.html

延伸阅读
标签: ASP
  下面给出了一个通用的函数及其用例,请参考。 <% REM 首先我们设计一个ShowCart函数,其中 REM aValues 是一个数值数组 REM aLables 是横坐标的标号 REM strTitle是这个统计图的标题 REM strXAxisLable  X轴的标签 REM strYAxisLable  Y轴的标签 Sub ShowChart(ByRef aValues, ByRef aLabels, ByRef strTitle, B...
标签: ASP
  一个网站有许多页面,如果用户知道某个页面的链接,可以在浏览器中直接输入url访问它。但这在一个要求有安全性的站点上是不允许的。我们要求用户必须登录以后才能访问各级页面,有时也确实希望用户总是先看到站点的主页。这两种要求可以通过在asp的global.asa中对session对象编程来实现。 1.用户必须从主页开始浏览 如果仅希望用户每...
标签: ASP
  在ASP应用中验证用户身份(4) 作者:仙人掌工作室 四、在安全页面中检查是否已经验证用户身份 每一个受保护的页面都应该检查用户身份是否已经验证。这是因为用户有可能为 这些页面做了书签,如果不在这些页面中验证用户已经登录,就不能保证浏览页面的 是经过授权的合法用户。 为检查是否已经验证用户身份,可以测试...
标签: ASP
  交互式的Web应用比那些只提供静态Web页面的站点要求考虑更多的安全问题。注册与密码是保护敏感信息最为常用的手段。由于ASP没有直接提供验证用户身份的方法,因此,用户必须执行登录过程以便应用系统保存和提取用户相关信息。 一、示例站点概貌 本文通过一个示例站点ASPSecurity说明ASP应用中注册与密码保护的一般实现 过...
标签: ASP
  三、用户身份验证 为简单计,本文只讨论在服务器端的用户身份验证。登录页面是通过调用 ASPSecurity.inc中的signUserOn函数验证用户身份的。signUserOn检查数据库中 是否存在和用户输入的名字、密码匹配的记录: function signUserOn(aSignon, aPassword) dim dict ' 用户输入的名字 aSignon = lcase(trim(aSignon)) ' 用户输入...

经验教程

586

收藏

17
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部