论坛风格切换切换到宽版
  • 7478阅读
  • 13回复

网站的计数器怎么编成!!! [复制链接]

上一主题 下一主题
离线无眠浪子
 

发帖
282
金钱
10
威望
1
只看楼主 倒序阅读 0 发表于: 2005-12-24
我作得网站没有的计数器,我怎么才能显示上,我没有代码,就是访问量之类...........高手指点!!!!!!!!!!!!不耻下问!!!!
男人事業最重要,沒有事業,何談愛情,沒有溫馨的家,哪有似蜜的情!生活就是這樣的誰也不會欺騙誰,除非你欺騙L
离线bandit3023
发帖
5
金钱
0
威望
0
只看该作者 1 发表于: 2005-12-25
很多相关书籍都有介绍啊!!!得自己 看下书,不难的!!!
你用什么语言做的asp/jsp/php??
离线无眠浪子

发帖
282
金钱
10
威望
1
只看该作者 2 发表于: 2005-12-25
哪个上首用哪个ASP, 我其实都不懂的只是想要显示网站没有的计数器就可以了,最好是源代码往HEML中添加就可以了!!!!!!好像申请的空间必须支持ASP 才行!!!!!
男人事業最重要,沒有事業,何談愛情,沒有溫馨的家,哪有似蜜的情!生活就是這樣的誰也不會欺騙誰,除非你欺騙L
离线cocodou

发帖
147
金钱
20
威望
2
只看该作者 3 发表于: 2005-12-26
看看这个文章吧


首先我们应该知道计数器的原理是在上一次的数量上加1的一个过程,也就是说将ASP文件结束执行之后,能够把变量(对象)的内容记录下来。我们可以用下列语句将变量(对象)的内容储存在Application对象之中:
Application″变量名称″=变量名称Set Application″对象名称″=对象名称
而下次网页重新启动时,则使用以下语句将变量(对象)的内容还原回来:
变量名称=Application″变量名称″
Set 对象名称=Application″对象名称″
如果觉得编写以上的语句很烦,可以直接把Application″变量名称″当成变量使用,如:
Application″counter″=Application″counter″+1
其作用相当于counter=counter+1, 所不同是Application对象的生命周期不会受限于网页的生命周期,所以Application″counter″的值在网页结束时还保留着。
假设我们提前将访问计数器存放在Application″counter″里面, 那么首页被启动一次,我们就将Application″counter″加1,这样就可以达到累计访问计数器的目的:
<%
Application″counter″ = Application″counter″ + 1
%>
<html>
<head>
<title></title>
</head>
<body bgcolor=″#FFFFFF″>
<h2 align=″center″>访问计数器 - count1.asp</h2>
<hr>
<p align=″center″>您是本站点第<%=Application″counter″%>位贵宾!</p>
</body>
</html>
其实以上程序并不能完全正确地访问计数器,因为以上程序执行有三个步骤:
1.读取Application″counter″ 的值。
2.将读取的值加1。
3.将加1之后的值返回Application″counter″。
如果有两位上网者同时启动网页,并且同时执行了以上的步骤1,那么他们所读取的值相同(假设等于100),接着虽然也都执行了步骤2、3把加1的结果相加Application″counter″而得到101的结果,但实际上却少加了一次。
怎样解决这个问题呢?那就是不让任何两位上网者同时执行以上的程序,而要避免这个事情的发生,只要把程序改成:
Application.Lock '锁定Application对象
Application.″counter″=Application″counter″+1
Application.unlock '解除Application对象的锁定
当某一程序执行了Application.Lock之后,其他程序便暂时不能使用Application对象,直到Application对象被解除锁定为止,所以我们把访问计数器加一的语句放在Application.Lock及Application.UnLock之间,便不会有计数器少加的情况发生了。
但是Application也不是无限期的,当服务器IIS/PWS关闭时,所累计的人次就会化为乌有。要克服这个问题,我们可以将访问计数器写到文件中,我写了一个Counter子程序,用途就是访问计数器写入到文件中,以上程序改成:
<%
Sub IncrementCounter
' 建立一个FileSystemObject对象
Set fs = Server.CreateObject″Scripting.FileSystemObject″
counter_file = Server.MapPath″counter.txt″
' 启动counter.txt文件,并且读取记录在文件中的counter
Set txt = fs.OpenTextFile counter_file 
Application″counter″ = txt.ReadLine
txt.Close
' 将计数器加1
Application″counter″ = Application″counter″ + 1
' 将计数器写入counter.txt文件中
Set txt = fs.CreateTextFile counter_file True 
txt.WriteLineApplication″counter″
txt.Close
End Sub
Application.Lock
IncrementCounter ' 将访问计数器加1并写入到文件中
Application.UnLock
%>
<html>
<head>
<title></title>
</head>
<body bgcolor=″#FFFFFF″>
<h2 align=″center″>访问计数器 - count3.asp</h2>
<hr>
<p align=″center″>您是本站第 <%=Application″counter″%> 位贵宾! </p>
</body>
</html>
以上制作的访问计数器是以文字来输出的,如果我们想显示图形的访问计数器,只要把计数器的数值转换成图形计数器的HTML标记即可。
首先必须准备好0~9共10个阿拉伯数字的图形文件,接下来的工作是编写程序将数值转换成图形的HTML标记:
<%
Application.Lock
Application″counter″ = Application″counter″ + 1
Application.UnLock
Function GCounter counter 
Dim S i G
S = CStr counter  '先将数值转换成字符串
'逐个取字符串 S 的每个字节然后串成<IMG SRC=﹖.gif> 图形标记
For i = 1 to LenS
G = G & ″<IMG SRC=″ & MidS i 1 & ″.gif Align=TextTop>″
Next
GCounter = G
End Function
%>
<html>
<head>
<title></title>
</head>
<body bgcolor=″#FFFFFF″>
<h2 align=″center″>访问计数器 - gcount.asp</h2>
<hr>
<p align=″center″>您是本站第 <%=GCounterApplication″counter″%> 位贵宾! </p>
</body>
</html>
到此为止,计数器完整的制作过程介绍完了
离线溪流

发帖
565
金钱
-10380
威望
-1038
只看该作者 4 发表于: 2005-12-28
<%
'设置数据文件路径
Const DATAFILE = "count.asp"

Set fs = Server.CreateObject("Scripting.FileSystemObject") '创建文件系统对象
path = Server.MapPath(DATAFILE) '获取文件绝对路径

'如果指定文件不存在则创建一个新文件
If fs.FileExists(path) = False Then
  Set f = fs.CreateTextFile(path)
  f.WriteLine(Date&", "&Date&", 0, 0, 0, 0, |")
  '文件格式:0最初访问日期, 1最后访问日期, 2 IP 访问总量, 3页面访问总量, 4今日 IP 访问量,5 今日页面访问量, 6本日访问的所有IP(用“|”分隔)
f.Close
End If

'读取数据

Set f = fs.OpenTextFile(path)
data = Split(f.ReadLine, ", ")
f.Close
If DateValue(data(1)) = Date Then '如果最后访问日期是今天
  If (Not (InStr(data(6),"|" & Session("ip") & "|") > 0)) Then '如果是新的 IP
    data(2) = data(2) + 1
    data(4) = data(4) + 1
    data(6) = data(6) & Session("ip") & "|"
  End If
    data(5) = data(5) + 1
Else '如果是新的一天
  data(1) = Date
  data(2) = data(2) + 1
  data(4) = 1
  data(5) = 1
  data(6) = "|" & Session("ip") & "|"
End If
data(3) = data(3) + 1

'显示数据
days = DateDiff("y", data(0), data(1)) + 1
%>
页面流量:今日:<%=data(5)%> 总量:<%=data(3)%> 平均:<%=data(3) \ days%>
IP 流量:今日:<%=data(4)%> 总量:<%=data(2)%> 平均:<%=data(2) \ days%>

<%
'写回数据
Set f = fs.CreateTextFile(path, True)
f.WriteLine data(0) & ", " & data(1) & ", " & data(2) & ", " & data(3) & ", " & data(4) & ", " & data(5) & ", " & data(6)
f.Close

'销毁对象
Set data = Nothing
Set days = Nothing
Set f = Nothing
Set path = Nothing
Set fs = Nothing
%>
因为用纸过大不利环保,2009年6月1日起,禁止使用纸质材料擦屁股,提倡公民养成不擦屁股或自带可重用抹布的习惯。违者最高可处以菊爆。
离线无眠浪子

发帖
282
金钱
10
威望
1
只看该作者 5 发表于: 2005-12-29
QUOTE(溪流 @ 2005年12月28日 08时09分)
<%
'设置数据文件路径
Const DATAFILE = "count.asp"

Set fs = Server.CreateObject("Scripting.FileSystemObject") '创建文件系统对象
path = Server.MapPath(DATAFILE) '获取文件绝对路径

'如果指定文件不存在则创建一个新文件
If fs.FileExists(path) = False Then
    Set f = fs.CreateTextFile(path)
    f.WriteLine(Date&", "&Date&", 0, 0, 0, 0, |")
    '文件格式:0最初访问日期, 1最后访问日期, 2 IP 访问总量, 3页面访问总量, 4今日 IP 访问量,5 今日页面访问量, 6本日访问的所有IP(用“|”分隔)
f.Close
End If

'读取数据

Set f = fs.OpenTextFile(path)
data = Split(f.ReadLine, ", ")
f.Close
If DateValue(data(1)) = Date Then  '如果最后访问日期是今天
    If (Not (InStr(data(6),"|" & Session("ip") & "|") > 0)) Then  '如果是新的 IP
        data(2) = data(2) + 1
        data(4) = data(4) + 1
        data(6) = data(6) & Session("ip") & "|"
    End If
        data(5) = data(5) + 1
Else  '如果是新的一天
    data(1) = Date
    data(2) = data(2) + 1
    data(4) = 1
    data(5) = 1
    data(6) = "|" & Session("ip") & "|"
End If
data(3) = data(3) + 1

'显示数据
days = DateDiff("y", data(0), data(1)) + 1
%>
页面流量:今日:<%=data(5)%> 总量:<%=data(3)%> 平均:<%=data(3) \ days%>
IP 流量:今日:<%=data(4)%> 总量:<%=data(2)%> 平均:<%=data(2) \ days%>

<%
'写回数据
Set f = fs.CreateTextFile(path, True)
f.WriteLine data(0) & ", " & data(1) & ", " & data(2) & ", " & data(3) & ", " & data(4) & ", " & data(5) & ", " & data(6)
f.Close

'销毁对象
Set data = Nothing
Set days = Nothing
Set f = Nothing
Set path = Nothing
Set fs = Nothing
%>
[snapback]265991[/snapback]



谢谢2位的解答, 都好不过我觉得第2个的只有代码不知道可以直接应用吗!!!!!!需要修改吗??????
                      这么多的,是插入到HEML中还是,用文本形式的,保存为.ASP的,我不会用,指点!!!!
男人事業最重要,沒有事業,何談愛情,沒有溫馨的家,哪有似蜜的情!生活就是這樣的誰也不會欺騙誰,除非你欺騙L
离线小帆

发帖
813
金钱
10
威望
1
只看该作者 6 发表于: 2005-12-29
首先,你的空間必須先支持ASP/PHP其中的一種。例外,一般寫入文本的方式不能通過的,因為一般的空間是屏蔽了文件操作了,所以隻能通過數據庫來讀取和寫入。數據庫一般用ACCESS的數據庫,因為ASP和ACCESS都是一家人,支持比較好,從什麼地方加入計數器,看你的需要而已,可以框架,可以表格,可以層。
离线cocodou

发帖
147
金钱
20
威望
2
只看该作者 7 发表于: 2005-12-29
你用编写网页的软件如DW,FP
新建一个asp,
把上面的部分贴进去就可以看到了
离线无眠浪子

发帖
282
金钱
10
威望
1
只看该作者 8 发表于: 2005-12-30
QUOTE(cocodou @ 2005年12月29日 18时45分)
你用编写网页的软件如DW,FP
新建一个asp,
把上面的部分贴进去就可以看到了
[snapback]266323[/snapback]


      把从% ............................% 的部分,是不是不用修改,旧可以看见!!!!
男人事業最重要,沒有事業,何談愛情,沒有溫馨的家,哪有似蜜的情!生活就是這樣的誰也不會欺騙誰,除非你欺騙L
离线溪流

发帖
565
金钱
-10380
威望
-1038
只看该作者 9 发表于: 2005-12-30
QUOTE(无眠浪子 @ 2005年12月30日 09时43分)
把从% ............................% 的部分,是不是不用修改,旧可以看见!!!!
[snapback]266406[/snapback]




自己试了不就知道了?



另外提醒一下,lz 两次把 HTML 写成 HEML 了(应该不是笔误吧)
因为用纸过大不利环保,2009年6月1日起,禁止使用纸质材料擦屁股,提倡公民养成不擦屁股或自带可重用抹布的习惯。违者最高可处以菊爆。