主题:  简单的ASP计数器问题

hotfish

职务:普通成员
等级:1
金币:0.0
发贴:1
#12006/2/10 10:35:53

<%
Function Counts(CounterFile)
Dim objFSO, objTS
Application.Lock
Set objFSO = Server.CreateObject("Scripting.FileSystemObject"
Set objTS = objFSO.OpenTextFile(Server.MapPath(CounterFile), 1, True)
If Not objTS.AtEndOfStream Then '检查是否到达文件结尾
Counts = CLng(objTS.ReadLine)
End If
Counts = Counts + 1
objTS.Close

Set objTS = objFSO.OpenTextFile(Server.MapPath(CounterFile), 2, True)
objTS.WriteLine(Counts)
objTS.Close
Application.Unlock
End Function

If Session("Counter" = Empty Then
Session("Counter" = Counts("jishu.txt"
End If
%>

网上找了个计数器代码,我觉得很简单很实用。不过现在是每个IP在一定的时间内只算一次访问,我想改成刷新一下就加1的那种简单的,呵呵,请问如何修改?
当然,这个按IP统计的能保留最好,到时候就知道了访问量和点击量。不过要把访问量隐藏起来~



三仙半

职务:普通成员
等级:1
金币:0.0
发贴:241
#22006/2/10 23:20:48
你这个要求有点特殊,通常是防止刷新时更新计数器,你是反其道而行之。
你把下面这句话
If Session("Counter" = Empty Then
Session("Counter" = Counts("jishu.txt"
End If
替换成Session("Counter" = Counts("jishu.txt")就行了,因为这个程序用一个session类型的变量记录了Counter的值,所以在session的生命周期内(默认为20分钟),你无论如何点击“刷新”都无变化。


闭起眼睛看人生

飞呀飞~~

职务:普通成员
等级:1
金币:0.2
发贴:164
#32006/2/12 1:33:16
好办啊
Session["counter"]+=1
哈,我说用IP记录用户访问量,在线人数不好
如果是局域网共享上网,你就没办法了,只能显示一个人,多不准确呀



三仙半

职务:普通成员
等级:1
金币:0.0
发贴:241
#42006/2/14 20:58:24
bettie19821031:
哥哥,提个解决局域网共享上网的计数器解决方法,如何?先谢谢了!!


闭起眼睛看人生

蓝鲸

职务:版主
等级:5
金币:42.1
发贴:2614
#52006/2/14 21:42:51
Session记数毛病就是浏览器重启就重新记数了。
用Cookie,并且为每台机子设定唯一ID,这样比较精确些,但前提是机子没有关闭Cookie


非常大鱼

三仙半

职务:普通成员
等级:1
金币:0.0
发贴:241
#62006/2/14 22:29:06
由于网络不安全因素的影响,稍微有点安全意识的人都安装有放火墙,而且下意识的会阻止任何网络对本机的操作,所以使用Cookie现在已经很难实现了,请问还有其他方法吗?


闭起眼睛看人生

蓝鲸

职务:版主
等级:5
金币:42.1
发贴:2614
#72006/2/15 1:38:20
zys59在上个帖子中说
引用:
由于网络不安全因素的影响,稍微有点安全意识的人都安装有放火墙,而且下意识的会阻止任何网络对本机的操作,所以使用Cookie现在已经很难实现了,请问还有其他方法吗?


没这么严重吧,cookie默认设置都是起用的,除了一些服务器考虑安全或安放重要数据的电脑外,一般普通电脑对cookie没有阻止。
现在一些会员系统很多都用cookie存放信息的,.net的安全认证也是基于cookie,因session不能长期存放信息。
session也是基于cookie的,cookie禁止了,session也就无法作用。
一般防火墙也不会阻止cookie。网络编程语言本身都是安全的,并不需要防火墙阻止。防火墙的作用是阻止本马程序或非法程序。


非常大鱼