10/10/2018, 10:22

Đếm số người đang truy cập vào website hiện tại & số lượt truy cập = ASP !!!

Ai là mod làm ơn sticky cái topic này lên dùm.
Now, let's start.

Vì thấy nhiều người cứ đặt câu hỏi: "Làm sao đếm số người đang truy cập vào website hiện tại & số lượt truy cập vào website" và nó cứ được lặp lại hoài, nên mình post cái này lên cho mọi người tham khảo, ai biết rồi thì thôi, ai chưa biết thì... học. Và vì mình chỉ biết ASP và ASP.NET, PHP thì không rành nên ai có nhã ý post code PHP lên thì post. Code ASP.NET cũng tương tự như ASP thôi.


đầu tiên, trong file Global.asa, bạn khai báo:

Code:
Sub Application_Start() ' Cái chỗ này là _Start() hay _OnStart() gì đó wên rồi.
  Application("counter") = 0 ' Số lượt truy cập.
  Application("cur") = 0 ' Số ng` đang truy cập 
End Sub
Sub Session_Start()
  Application.Lock()
  Application("counter") =  Application("counter") + 1 ' Hông biết có cần cast 
hông nữa ^.^
  Application("cur") = Application("cur") + 1
  Application.Unlock()
End Sub
Sub Session_End()
  Application.Lock()
  Application("cur") = Application("cur") - 1
  Application.Unlock()
End Sub
Và ở trang bạn muốn hiện cái thông báo thì chèn:
Code:
Số người đang duyệt web: <%=Application("cur")%>. Số lượt truy cập: <%=Application("counter")%>
Xong, cho ý kiến nhá
xacuop viết 12:32 ngày 10/10/2018
hi`hi`, đếm số người hiện tại thì dùng cách này là OK. Nhưng còn lượt truy cập hình như ko ổn lắm. Lỡ mà server restart thì lượt truy cập lại bằng 0.
Cận viết 12:25 ngày 10/10/2018
Nếu bạn host ở 1 server tốt, thì làm gì có vụ nó restart.
Đây là cách nhanh nhất, cón cách nữa là lưu vào file text hoặc database, cách đó dĩ nhiên chậm hơn rồi.
xacuop viết 12:38 ngày 10/10/2018
Làm gì có host nào good mà chạy ko restart hả boy? (trừ server của MS, IBM, Y! - nhưng nó restart lúc nào mình cũng đâu có biết ). Ghi lên DB hay file ko lâu hơn bao lâu đâu, chậm mà chắc ăn. Nếu site mà cần tốc độ và ko cần quan tâm hit counter thì dùng cách của boy là ok.
Hìhì, anh em bên aspvn.net nên đưa ra nhận xét thôi, chứ ko có ý gì đâu
Cận viết 12:31 ngày 10/10/2018
Oh, về vấn đề này thì boy không biết chắc, sorry nha :: . OK, vậy chắc viết thêm 1 bài ghi vào file text cho anh em newbie .

Chờ nghen
NumPad0 viết 12:36 ngày 10/10/2018
Bạn hãy đừng quá tự tin vào file global.asa quá đáng như thế. Ngon nhất là bạn có thể dùng CSDL, với cách này bạn còn có thể biết được người dùng nào đang làm việc gì nữa cơ.
-> Để đếm số người đang truy cập bạn sử dụng một bảng trong CSDL hoặc một file text. Cái này để xacuop viết đê chứ không lại bảo là tranh hàng
- Còn với mod theo dõi action của user. Với mỗi một người dùng khi chuyển qua các trang bạn nên cập nhật thông tin về script đang được triệu gọi trên trình duyệt của user. Thông tin này được lưư lại trong CSDL. Với mỗi một script, bạn hãy chuyển thông tin đó thành action của từng user tại thời điểm đó. Giống như của IBF.
Thế này nhé, nếu script của user đang chạy là index.asp, action tương ứng với script đó là "user này đang ở trang chủ" chẳng hạn. Cái đó tùy bạn xử lý, nhưng do ASP không có khái niệm "mảng có index không phải là int" nên hơi khó, không sao, bạn có thể dùng Object Dictionary của ASP.
Chúc vui.
Cận viết 12:32 ngày 10/10/2018
Được gửi bởi NumPad0
Bạn hãy đừng quá tự tin vào file global.asa quá đáng như thế. Ngon nhất là bạn có thể dùng CSDL, với cách này bạn còn có thể biết được người dùng nào đang làm việc gì nữa cơ.
-> Để đếm số người đang truy cập bạn sử dụng một bảng trong CSDL hoặc một file text. Cái này để xacuop viết đê chứ không lại bảo là tranh hàng
- Còn với mod theo dõi action của user. Với mỗi một người dùng khi chuyển qua các trang bạn nên cập nhật thông tin về script đang được triệu gọi trên trình duyệt của user. Thông tin này được lưư lại trong CSDL. Với mỗi một script, bạn hãy chuyển thông tin đó thành action của từng user tại thời điểm đó. Giống như của IBF.
Thế này nhé, nếu script của user đang chạy là index.asp, action tương ứng với script đó là "user này đang ở trang chủ" chẳng hạn. Cái đó tùy bạn xử lý, nhưng do ASP không có khái niệm "mảng có index không phải là int" nên hơi khó, không sao, bạn có thể dùng Object Dictionary của ASP.
Chúc vui.
Dĩ nhiên, boy đồng ý với bạn về điểm này. boy đã nói là viết bài này cho newbie, nên nếu họ không biết đến việc có mấy user đang online hay bao nhiêu user đã truy cập thì cũng chẳng cần biết đến cái việc user đang làm gì của bạn.
ai biết rồi thì thôi, ai chưa biết thì... học
OK, vậy thôi, mình chẳng có ý gì xấu cả, đều là học hỏi nhau hết mà
Thân.
xacuop viết 12:35 ngày 10/10/2018
Boy ui, viết tiếp cho newbie ghi lên text đi. xauop ko có rảnh lắm, chủ yếu là cho mọi người biết cách dùng ASP thôi. Ai post cũng được cả
Cận viết 12:26 ngày 10/10/2018
OK, bữa nay code "chay" 1 bữa ( có sai sót gì thì báo liền nghen, để còn sửa nữa )
Lần này, ta không dùng biến Application để lưu nữa mà dùng textfile, rồi đưa kq vào biến Session, bạn sửa lại
Code:
Sub Application_Start() ' Cái chỗ này là _Start() hay _OnStart() gì đó wên rồi.
  Application("cur") = 0 ' Số ng` đang truy cập 
End Sub
Sub Session_End()
  Application.Lock()
  Application("cur") = Application("cur") - 1
  Application.Unlock()
End Sub

Sub Session_Start()
  Application.Lock()
  Application("cur") = Application("cur") + 1
  Application.Unlock()

   Const ForReading = 1, ForWriting = 2
   Dim fso, MyFile
   Set fso = CreateObject("Scripting.FileSystemObject")
   Set MyFile = fso.OpenTextFile(Server.MapPath + "counter.txt", ForReading)
   Session("counter") = MyFile.ReadLine
   MyFile.Close
   Session("counter") = Session("counter") + 1
   Set MyFile = fso.OpenTextFile(Server.MapPath + "counter.txt", ForReading)
   MyFile.WriteLine Session("counter")
   MyFile.Close 
End Sub
Còn chỗ show ra:
Code:
Số người đang duyệt web: <%=Application("cur")%>. Số lượt truy cập: <%=Session("counter")%>
Chú ý phần thay đổi là ở chỗ in đậm.
viết 12:24 ngày 10/10/2018
Xem bài viết này bạn sẽ biết cách viết 1 cái theo ý mình

http://www.echip.com.vn/echiproot/ht...tructuyen.html
Bài liên quan
0