Danh mục tài liệu

Lấy thông tin chi tiết từ người dùng viếng thăm website của bạn

Số trang: 23      Loại file: pdf      Dung lượng: 154.37 KB      Lượt xem: 19      Lượt tải: 0    
Xem trước 3 trang đầu tiên của tài liệu này:

Thông tin tài liệu:

Đã bao giờ bạn muốn xem những ai đang duyệt website của bạn vào một thời điểm thực không? Họ có bao nhiêu người? Họ sử dụng trình duyệt gì? Họ từ đâu đến? Địa chỉ host và tên host của họ là gì? Và chính xác trang nào mà họ đang đọc. Tất cả một cách thật chi tiết, nếu bạn muốn như thế thì article này chính là dành cho bạn. Chúng ta sẽ học gì trong article này? Những chủ đề dưới đây sẽ được đề cập: • Làm thế nào để đếm số người đang duyệt...
Nội dung trích xuất từ tài liệu:
Lấy thông tin chi tiết từ người dùng viếng thăm website của bạn Lấy thông tin chi tiết từ người dùng viếng thăm website của bạn Đã bao giờ bạn muốn xem những ai đang duyệt website của bạn vào một thời điểm thực không? Họ có bao nhiêu người? Họ sử dụng trình duyệt gì? Họ từ đâu đến? Địa chỉ host và tên host của họ là gì? Và chính xác trang nào mà họ đang đọc. Tất cả một cách thật chi tiết, nếu bạn muốn nh ư thế thì article này chính là dành cho bạn. Chúng ta sẽ học gì trong article này? Những chủ đề dưới đây sẽ được đề cập: • Làm thế nào để đếm số người đang duyệt website? • Làm thế nào để đếm tất cả số người dùng truy cập vào website kể từ khi ứng dụng web được bắt đầu? • Làm thế nào để biết thời điểm cuối c ùng mà ứng dụng khởi động lại? • Làm thế nào để giữ được thông tin mỗi người dùng trên site? Chúng ta làm gì trong article này? Chúng ta sẽ tạo và chỉnh sửa bốn file sau đây: • viewSessions/default.aspx (file ASP.NET) • viewSessions/UserInfo.cs (file C#) • Global.asax (file ứng dụng ASP.NET) • viewSessions/compiled.bat Để biên dịch file nguồn thongtinUser.cs, chúng ta sẽ tạo một file .bat (batch). Một khi đã biên dịch, chúng ta sẽ có một file Stardeveloper.Test1.dll trong th ư mục bin. Đây là screenshot khi chạy ứng dụng trên local host, và xem trang viewSessions/default.aspx Global.asax Bắt đầu bằng việc tạo ra file “Global.asax” . Đây l à file chính cho ứng dụng của chúng ta nhưng nó sẽ không hiển thị đối với ng ười dùng cuối. Global.asax là một file chứa sự kiện ứng dụng (application event) cho các trang ASP.NET gần giống với Global.asa trong các trang ASP. File này chứa các application event mà bạn có thể override để sử dụng cho chính bạn. Global.asax chứa các event nhiều hơn file gốc Global.asa. Nếu bạn là một người mới, và bạn không biết application event là gì, thì application event là những hành động xảy ra trong một ứng dụng web, nh ư khi ứng dụng bắt đầu, khi ứng dụng kết thúc, khi nhận đ ược một request, khi một response đ ược tạo ra… Những gì chúng ta có thể làm là đặt một vài đoạn mã cho những event đó nếu chúng ta muốn sử dụng chúng. Ví dụ nh ư nếu chúng ta muốn ghi lại thời gian ứng dụng của chúng ta bắt đầu , chúng ta cần sử dụng event “bắt đầu ứng dụng”. Ứng dụng xem session của chúng ta sử dụng những event sau đây: • Application_OnStart: gọi khi ứng dụng được bắt đầu • Session_OnStart: gọi khi session của một user mới đ ược bắt đầu • Session_OnEnd: gọi khi session của một user tồn tại kết thúc hoặc ch ương trình thoát m ột cách tự động • Application_OnPostRequestHandlerExecute: g ọi khi request được xử lý bởi Request Handler và HttpSessionState có sẵn. Tạo hoặc chỉnh sửa file “Global.asax” và chắc chắn rằng nó c hứa các dòng mã dưới đây cho bốn application event. Nếu bạn đ ã có sẵn mã cho các event này trong file Global.asax của bạn, thì bạn chỉ cần chỉnh sửa lại các method event cho đúng với đoạn mã của chúng ta. public void Application_OnStart(Object sender, EventArgs e) { Hashtable ht = (Hashtable)Application[SESSION_LIST]; if(ht == null) { ht = new Hashtable(); lock(Application) { Application[SESSION_LIST] = ht; Application[APP_START_TIME] = DateTime.Now; Application[TOTAL_SESSIONS] = 0; } } } public void Session_OnStart(Object sender, EventArgs e) { UserInfo ui = new UserInfo(); Session[USER_INFO_MAP] = ui; Hashtable ht = (Hashtable)Application[SESSION_LIST]; if(ht.ContainsKey(Session.SessionID) == false) { ht.Add(Session.SessionID, Session); } lock(Application) { int i = (int)Application[TOTAL_SESSIONS]; i++; Application[TOTAL_SESSIONS] = i; } } public void Session_OnEnd(Object sender, EventArgs e) { Session.Clear(); Hashtable ht = (Hashtable)Application[SESSION_LIST] ; ht.Remove(Session.SessionID); } public void Application_OnPostRequestHandlerExecute(Object sender, EventArgs e) { try { UserInfo ui = (UserInfo)Session[USER_INFO_MAP]; if(ui != null && Session.IsNewSession) { try { if(Request.UrlReferrer != null) { ui.URLReferrer = Request.UrlReferrer.ToString(); } ui.UserAgent = Request.UserAgent; ui.HostAddress = Request.UserHostAddress; ui.HostName = Request.UserHostName; } catch (Exception) { } } if(ui != null) { ui.URLViews.Add(Request.RawUrl); } } catch(Exception) { } } Giải thích Dòng đầu tiên là một phát biểu bổ sung trực tiếp namespace “Stardeverloper.Test”. Chúng ta làm điều này để bổ sung lớp UserInfo sẽ được tạo ra sau này trong article. Đây là một ứng dụng trực tiếp, và chúng ta sử dụng nó để ấn định thuộc tính “Debug” là “true”. Điều này có nghĩa là nếu có một vài ...