記錄用戶在網站上的逗留時間

發表于:2007-07-01來源:作者:點擊數: 標簽:
記錄用戶在網站上的逗留時間 我們總是對網站的流量很關心,但網站的流量多少并不能說明你的網頁具有多少吸引力。能更準確地說明你的網站吸引力的,是用戶在你的網站上逗留的時間。這篇文章中的思路就是想實現這個功能,而且它還可以讓你知道當前有多少用戶在
 

記錄用戶在網站上的逗留時間

我們總是對網站的流量很關心,但網站的流量多少并不能說明你的網頁具有多少吸引力。能更準確地說明你的網站吸引力的,是用戶在你的網站上逗留的時間。這篇文章中的思路就是想實現這個功能,而且它還可以讓你知道當前有多少用戶在線。

為了實現這個功能,首先一個網站要有“登陸框”。你需要一個數據庫(記錄用戶和他們登陸與注銷的時間),需要global.asa文件(這樣你可以在當Session.Abandon發生或者Session.Timeout終止時使用Session_OnEnd事件追蹤時間。這個時間是當用戶擊中“注銷”或者退出你的程序時的時間)。

數據庫

數據庫采用MS Aclearcase/" target="_blank" >ccess 2000數據庫(mdb文件)。它包含有兩張表:Members表和User_LogTimes表。在Members表里保留一些登陸信息如:user name, Password, user first name和user last name。在User_LogTime表中,保留了用戶登陸/注銷的時間的記錄,而且從這個表里我們可以知道網站上有多少個用戶在線。

數據庫的設計這里略去。

腳本

login.asp

當一個用戶在你的站點上登陸,login.asp中的腳本首先被執行。當用戶在登陸框中輸入用戶名和密碼,你需要創建一個查詢來從Members表中得到用戶ID。這個值將被存儲在對話變量中:

 

´從登陸框中得到用戶名和密碼

UserName = Request.Form ("UserName")

Password = Request.Form ("Password")

...

...

set conn = Server.CreateObject ("ADODB.Connection")

conn.Open Application("connString")

query = "SELECT Id FROM Members WHERE UserName=´" &_ UserName & "´ AND Password=´" & Password &_ "´"

´ 從數據庫中得到用戶ID

set rs = conn.Execute (query)

...

...

´從Members表里在對話變量中設置用戶ID值

Session("member") = rs("Id")

 

Session("member")變量中有了用戶ID后,現在我們必須在User_LogTime表中對這個把Offline字段設置為False(意思是他已經在線)的用戶的所有記錄進行修改,而且還要把那個字段設置為True。這樣改變的字段將不會有一個注銷時間。一般這個操作不會影響表里的任何記錄?!癘ffline”字段的記錄設置為False也許會存在當用戶沒有適當地關閉或用戶倉促地注銷的情況。

然后我們在User_LogTime表里使用用戶IDuser_id),用戶的SessionID和用戶的登陸時間(login time)插入到一個新的記錄:

 

´從 User_LogTime中對應修改這個用戶的所有記錄

query = "UPDATE User_LogTime SET offline=True WHERE offline=False AND user_id="&_ session("member")

conn.Execute (query)

´在User_LogTime表中用user_id,SessionID和 login time插入新的記錄

query = "INSERT INTO User_LogTime (user_id, SID, Login_Time) "

query = query &_"VALUES (" & Session("member") & "," &_ Session.SessionID & ",#" & now() & "#)"

conn.Execute (query)

 

global.asa

當一個對話開始時上面的代碼被呼叫,你得到登陸時間,然后將它們寫進數據庫。

當用戶擊中“注銷”,然后Session.Abandon被呼叫。如果用戶沒有點擊“注銷”就退出程序,那么在session.Timeout終止時,Session_OnEnd就會被執行。在這個過程中你會更新已經寫進login.asp的記錄,然后更新Logout_time,修改offline字段為TRUE。

 

Sub Session_OnEnd

set conn = Server.CreateObject ("ADODB.Connection")

conn.Open Application("connString")

´當用戶注銷時更新記錄,記下注銷時間,再設置用戶為Offline

query = "UPDATE User_LogTime SET Logout_Time=#" & now() & "#, offline=True "

query = query & "WHERE offline=False AND SID=" & Session.SessionID &_ " AND user_id=" & Session("member")     

conn.Execute (query)

conn.Close

set conn = Nothing

End Sub

 

在線用戶

有了Offline字段就使這個問題變的容易了。你可以產生一個SQL查詢,像這樣:

query = "SELECT DISTINCT user_id FROM User_LogTime WHERE offline=False"

執行查詢,記錄里的數字將是你的在線用戶的數字。你可以有選擇地呼叫:

query = "SELECT COUNT(*) as NumOnline FROM User_LogTime WHERE offline=False"

用一個記錄返回一個記錄,字段(“NumOnline”)就是在線用戶的數量。

這樣,我們就完成了這個實例的模型,剩下的就是一些細枝末節的工作了。我們可以將它的功能擴展。但是要注意在Win95/98上PWS 會工作的很好,但在IIS5上,記得Session_OnEnd會通過IWAM_machine運行,而不是通過IUSR。所以在有登陸/注銷時間的數據庫中一定要設置寫/修改的權利。

記錄用戶在網站上的逗留時間

我們總是對網站的流量很關心,但網站的流量多少并不能說明你的網頁具有多少吸引力。能更準確地說明你的網站吸引力的,是用戶在你的網站上逗留的時間。這篇文章中的思路就是想實現這個功能,而且它還可以讓你知道當前有多少用戶在線。

為了實現這個功能,首先一個網站要有“登陸框”。你需要一個數據庫(記錄用戶和他們登陸與注銷的時間),需要global.asa文件(這樣你可以在當Session.Abandon發生或者Session.Timeout終止時使用Session_OnEnd事件追蹤時間。這個時間是當用戶擊中“注銷”或者退出你的程序時的時間)。

數據庫

數據庫采用MS Access 2000數據庫(mdb文件)。它包含有兩張表:Members表和User_LogTimes表。在Members表里保留一些登陸信息如:user name, Password, user first name和user last name。在User_LogTime表中,保留了用戶登陸/注銷的時間的記錄,而且從這個表里我們可以知道網站上有多少個用戶在線。

數據庫的設計這里略去。詳見下圖的設計:

腳本

login.asp

當一個用戶在你的站點上登陸,login.asp中的腳本首先被執行。當用戶在登陸框中輸入用戶名和密碼,你需要創建一個查詢來從Members表中得到用戶ID。這個值將被存儲在對話變量中:

 

´從登陸框中得到用戶名和密碼

UserName = Request.Form ("UserName")

Password = Request.Form ("Password")

...

...

set conn = Server.CreateObject ("ADODB.Connection")

conn.Open Application("connString")

query = "SELECT Id FROM Members WHERE UserName=´" &_ UserName & "´ AND Password=´" & Password &_ "´"

´ 從數據庫中得到用戶ID

set rs = conn.Execute (query)

...

...

´從Members表里在對話變量中設置用戶ID值

Session("member") = rs("Id")

 

Session("member")變量中有了用戶ID后,現在我們必須在User_LogTime表中對這個把Offline字段設置為False(意思是他已經在線)的用戶的所有記錄進行修改,而且還要把那個字段設置為True。這樣改變的字段將不會有一個注銷時間。一般這個操作不會影響表里的任何記錄?!癘ffline”字段的記錄設置為False也許會存在當用戶沒有適當地關閉或用戶倉促地注銷的情況。

然后我們在User_LogTime表里使用用戶IDuser_id),用戶的SessionID和用戶的登陸時間(login time)插入到一個新的記錄:

 

´從 User_LogTime中對應修改這個用戶的所有記錄

query = "UPDATE User_LogTime SET offline=True WHERE offline=False AND user_id="&_ session("member")

conn.Execute (query)

´在User_LogTime表中用user_id,SessionID和 login time插入新的記錄

query = "INSERT INTO User_LogTime (user_id, SID, Login_Time) "

query = query &_"VALUES (" & Session("member") & "," &_ Session.SessionID & ",#" & now() & "#)"

conn.Execute (query)

 

global.asa

當一個對話開始時上面的代碼被呼叫,你得到登陸時間,然后將它們寫進數據庫。

當用戶擊中“注銷”,然后Session.Abandon被呼叫。如果用戶沒有點擊“注銷”就退出程序,那么在session.Timeout終止時,Session_OnEnd就會被執行。在這個過程中你會更新已經寫進login.asp的記錄,然后更新Logout_time,修改offline字段為TRUE。

 

Sub Session_OnEnd

set conn = Server.CreateObject ("ADODB.Connection")

conn.Open Application("connString")

´當用戶注銷時更新記錄,記下注銷時間,再設置用戶為Offline

query = "UPDATE User_LogTime SET Logout_Time=#" & now() & "#, offline=True "

query = query & "WHERE offline=False AND SID=" & Session.SessionID &_ " AND user_id=" & Session("member")     

conn.Execute (query)

conn.Close

set conn = Nothing

End Sub

 

在線用戶

有了Offline字段就使這個問題變的容易了。你可以產生一個SQL查詢,像這樣:

query = "SELECT DISTINCT user_id FROM User_LogTime WHERE offline=False"

執行查詢,記錄里的數字將是你的在線用戶的數字。你可以有選擇地呼叫:

query = "SELECT COUNT(*) as NumOnline FROM User_LogTime WHERE offline=False"

用一個記錄返回一個記錄,字段(“NumOnline”)就是在線用戶的數量。

這樣,我們就完成了這個實例的模型,剩下的就是一些細枝末節的工作了。我們可以將它的功能擴展。但是要注意在Win95/98上PWS 會工作的很好,但在IIS5上,記得Session_OnEnd會通過IWAM_machine運行,而不是通過IUSR。所以在有登陸/注銷時間的數據庫中一定要設置寫/修改的權利。


原文轉自:http://www.anti-gravitydesign.com

国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97