[推薦]用asp.net顯示線上登陸人數及位置

來源:互聯網
上載者:User
一、原理

  在.net中的global.asax中有Application_AuthenticateRequest事件和Application_BeginRequest事件是在每次訪問aspx檔案都會觸發。但是Application_BeginRequest中不能對已經經過FROMS身分識別驗證的身份ticket票進行識別。所以只能放到Application_AuthenticateRequest中去。

  實現原理是:每次訪問aspx檔案時候都會判斷線上表裡面是否有這個使用者(已經登入了的記錄使用者名稱,沒有登入的記錄IP地址),如果不存在,則將該使用者的身份、最後訪問時間、最後訪問IP、和最後訪問的URL存入資料庫。如果資料庫中已經曾在,則更新該記錄,把最後訪問時間,IP以及最後訪問URL更新。

  同時,刪除資料庫中與目前時間間隔20分鐘以上的資料(20分鐘沒操作當為逾時)。

二、優點

  這樣,你不僅僅可以看到當前線上的準確人數,還知道是那些人線上,以及是否登陸,和訪問人數中已經是會員的比例,以及所在位置,並計算某個頁上的人數。

三、資料庫結構:

欄位 類型 長度 說明

1uson_serial int 40 序號

0uson_user varchar 200 使用者名稱(沒登陸則為IP)

0uson_company varchar 1000 公司名(沒登陸則為'遊客')

0uson_ip varchar 200 IP地址

0uson_date datetime 80 最後操作時間

0uson_url varchar 1000 最後操作頁面路徑

四、程式

  注意:

  1、程式位於global.asax中

  2、使用的FORMS身分識別驗證

  3、請使用 System.Web.Security

protected void Application_AuthenticateRequest(Object sender, EventArgs e)

{

string strUserID = string.Empty;

string strCompany = string.Empty;

if (Request.IsAuthenticated)

{

FormsIdentity identity = (FormsIdentity)User.Identity;

FormsAuthenticationTicket ticket = identity.Ticket;

strUserID = User.Identity.Name;

strCompany = ticket.UserData.Split("|".ToCharArray())[2];

}

else

{

strUserID = Request.UserHostAddress;

strCompany = "遊客";

}

MemberOnlineInfo objOnline = new MemberOnlineInfo(strUserID, Request.UserHostAddress, DateTime.Now.ToString(), Request.FilePath, strCompany);

MemberAccount account = new MemberAccount();

if (!account.CheckUserOnline(strUserID))

account.AddOnline(objOnline);

else

account.UpdateOnline(objOnline);

//刪除逾時的會員

account.DeleteOnline();

}
 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.