วิธีแก้ปัญหาของฉันคือผู้ใช้มีปัญหาช่วงเวลาที่ใช้งานอยู่ ผู้ที่เกินช่วงเวลาที่ใช้งานนี้ถือว่าออฟไลน์ได้ ส่วนอย่างหลังสามารถเข้าสู่ระบบได้ หากอันหลังไม่ได้เข้าสู่ระบบ ก็ไม่ได้หมายความว่าอันแรกจำเป็นต้องเข้าสู่ระบบอีกครั้ง เพราะเซสชั่นของเขายังคงอยู่ที่นั่น เวลานี้สามารถตั้งค่าให้เล็กที่สุดเท่าที่จะเป็นไปได้และแม่นยำยิ่งขึ้น แต่ไม่สามารถตั้งค่าได้อย่างสมบูรณ์
รหัสถูกโพสต์ไว้เพื่อใช้อ้างอิงของผู้โพสต์
ฟังก์ชั่นตรวจสอบออนไลน์()
DIM IP,rsPrv,Sql,PrvDbState
PrvDbState = เท็จ
ถ้า DBSTATE = False แล้ว
ดีบีโอเพ่น()
PrvDbState = จริง
สิ้นสุดถ้า
ตั้งค่า rsPrv=Server.CreateObject(ADODB.Recordset)
ถ้าเซสชัน(ชื่อผู้ใช้) = แล้ว
Sql=select * จาก [ออนไลน์] โดยที่ SessionID='& Session.Sessionid &'
rsPrv.Open Sql,Conn,1,3
ถ้า rsPrv.Eof แล้ว
rsPrv.เพิ่มใหม่
rsPrv(SessionID) = เซสชัน.SessionID
rsPrv(GroupChargeLv) = -1
rsPrv(LastActTime) = ตอนนี้()
rsPrv(UserIP) = รับ IP
rsPrv(OnLineTime) = 0
rsPrv(UserWhere) = Request.ServerVariables(HTTP_REFERER)
อื่น
rsPrv(UserWhere) = Request.ServerVariables(HTTP_REFERER)
rsPrv(OnLineTime) = rsPrv(OnLineTime) + DateDiff(n,rsPrv(LastActTime),ตอนนี้())
rsPrv(LastActTime) = ตอนนี้()
สิ้นสุดถ้า
rsPrv.อัพเดต
rsPrv.ปิด()
'ตอบกลับ เขียน notlogin'
อื่น
'ตอบกลับ เขียนเข้าสู่ระบบ'
Sql=select * จาก [ออนไลน์] โดยที่ UserName='& Session(UserName) &'
rsPrv.Open sql,Conn,1,3
ถ้า rsPrv.Eof แล้ว
rsPrv.เพิ่มใหม่
rsPrv(SessionID) = เซสชัน.SessionID
rsPrv(ชื่อผู้ใช้) = เซสชั่น(ชื่อผู้ใช้)
rsPrv(GroupChargeLv) = เซสชัน (GroupChargeLv)
rsPrv(LastActTime) = ตอนนี้()
rsPrv(OnLineTime) = 0
rsPrv(UserIP)= รับ IP
rsPrv(UserWhere) = Request.ServerVariables(HTTP_REFERER)
อื่น
ถ้า rsPrv(SessionID) <> Session.SessionID และ Application(LoginSet)(1) = False แล้ว
InfoTo LoginOut.asp บัญชีนี้เคยเข้าสู่ระบบที่อื่นแล้ว เว็บไซต์สามารถเข้าสู่ระบบได้ 1 ครั้งต่อ 1 ID/nคุณสามารถลองเข้าสู่ระบบในภายหลังได้
การตอบสนองสิ้นสุด()
สิ้นสุดถ้า
rsPrv(UserWhere) = Request.ServerVariables(HTTP_REFERER)
rsPrv(OnLineTime) = rsPrv(OnLineTime) + DateDiff(n,rsPrv(LastActTime),ตอนนี้())
rsPrv(LastActTime)=ตอนนี้()
สิ้นสุดถ้า
rsPrv.อัพเดต
rsPrv.ปิด()
สิ้นสุดถ้า
ตั้งค่า rsPrv = ไม่มีเลย
ถ้า DateDiff(s,Application(OnLineLastDelete),Now()) > Int(Application(DELETEONLINEDIFF)) แล้วก็
แอพลิเคชันล็อค()
แอปพลิเคชัน (OnLineLastDelete) = ทันที
แอปพลิเคชันปลดล็อค()
Conn.Execute(ลบจาก [ออนไลน์] โดยที่ datedIff('s',LastActTime,Now())>& Int(Application(CHECKONLINEDIFF) &)) 'ลบผู้เยี่ยมชมที่ไม่ได้ใช้งานเป็นเวลา x วินาที
สิ้นสุดถ้า
ถ้า PrvDbState = True แล้ว DbClose()
ฟังก์ชันสิ้นสุด