09/10/2018, 23:22
Lưu thời gian lần cuối cùng online ?
Làm sao để biết được thời gian lần cuối cùng online của 1 thành viên để lưu vào CSDL ? Có ai biết cách làm này không ?
Bài liên quan
Đùa vậy, bạn tạo một table có lưu
- Tên người dùng (id)
- Thời gian click
Mỗi khi người dùng triệu gọi một script, bạn sẽ lưu thông tin lúc đó vô bảng. Như vậy nếu cả khi người dùng không logout, bạn cũng sẽ có thời gian cuối cùng mà người dùng đã duyệt site.
Chúc bạn code vui, đừng có phê vì code. He he...
Trong đó khóa chính của bảng là số IP, mỗi lần người dùng truy cập thì ghi lại số IP, nếu số IP chưa tồn tại thì insert một dòng vào bảng, nếu đăng nhập thì sửa field nickname thành tên truy cập của thành viên đó, tên truy cập mặc định là guest. Sau mỗi vài phút thì bác refesh lại một lần để nó cập nhật lại.
Cuối cùng chỉ việc đếm số dòng là ra số thành viên, đếm số dòng có field nickname = 'guest' là ra số khách, đếm số dòng có nickname!='guest' thì ra số thành viên rồi nhân tiện select luôn cái tên ra.
- Trong GLOBAL.asa, tôi tạo 1 biến Application("guest") = 0
- Khi Sesion_OnStart() thì
Application("guest") = Application("guest") + 1
Session.TimeOut = 15
- Khi Sesion_OnEnd() thì
Application("guest") = Application("guest")- 1
- Khi thành viên đăng nhập vào thì biến Application("guest") = Application("guest")- 1, đồng thời xét cập nhật thời gian lastvisit = thời gian hiện tại. Khi thành viên bấm vào nút Logout và Close trình duyệt thì Application("guest") = Application("guest") + 1
- Nhưng có một tình huống như sau : khi thành viên không bấm gì trên trình duyệt khoảng 15 phút (trang Web vẫn mở) thì Session sẽ Timeout, khi đó trang Web sẽ yêu cầu đăng nhập trở lại. Tại sao biến Application("guest") lại không tăng lên 1 khi thành viên đó đã trở thành "guest" rồi, các bạn có biết cách khắc phục điều này không ?
Application.Lock <-- Thêm
Application("guest") ++
Application.Unlock <- Thêm
...
Close trình duyệt mà tăng "guest" lên 1 à?
- "guest" ko tăng lên 1 vì session timeout = Session_OnEnd(), request hay refresh lại = Session_OnStart().
Thử lại xem