“技術天地”中的《編寫ASP圖形計數器》一文,詳細的說明了如何利用流行的ASP來編寫計數器。但是,美中不足的是,如果某個用戶反復點擊“刷新”按鈕,那么計數器還是要不斷的增加的,這對網站點擊率評比來說是不公平的,也失去了計數器做為正常統計功能的作用。如何在技術上避免這種情況的發生呢? 我認為要防止上網用戶連續按下“刷新”計數器也連續增加的問題,最好的辦法就是利用ASP的Session對象,我們可以借助Session對象首先判斷該用戶是否為新連接者,如果是,那么
IsEmpty(Session("hasbeenConnected"))=True,也就是說,Session("hasbeenConnected")是空的。那么,運行程序,使計數器加1,然后將該用戶的Session("hasbeenConnected")設置為True,也就是說,這個用戶已經不是新的連接者,無論他怎么連續按下“刷新”按鈕,計數器也不會再增加。
結合《編寫ASP圖形計數器》一文,最后的站點計數器的源程序應該是:
<html> <head> …… </head> <body> <%dim tms,counter,countlen dim images(20) h1="<p><font color='#8000ff'>這是一個ASP計數器</font></p>" If IsEmpty(Session("hasbeenConnected")) then set rs=server.createobject("adodb.recordset") application.lock rs.open "update aspcount set countss=countss+1","dsn=userdbs",3,3 application.unlock Session("hasbeenConnected")=True End If set rs=server.createobject("adodb.recordset") rs.open "select * from aspcount","dsn=userdbs",3,3 rs.movefirst counter=rs(0) countlen=len(counter) tms="<h1><font color='#8000ff'>您是第</font>"&&counter&&"<font color='#8000ff'>位訪問者!</font></h1>" response.write(tms) for i=1 to countlen images(i)="<img src=" && mid(counter,i,1) && ".gif></img>" next response.write images(1)&&images(2)&&images(3)&&images(4)&&images(5)&&images(6)&&images(7) rs.Close %> </body> </html>
|