الحل الخاص بي لهذه المشكلة هو أن المستخدم لديه مشكلة الفاصل الزمني النشط. يمكن اعتبار تلك التي تتجاوز هذه الفترة الزمنية النشطة غير متصلة بالإنترنت ويمكن تسجيل دخول الأخير. إذا لم يتم تسجيل دخول الأخير، فهذا لا يعني أن الأول يحتاج إلى تسجيل الدخول مرة أخرى. لأن جلسته لا تزال هناك. لا يمكن ضبط هذه المرة إلا بأصغر حجم ممكن وأكثر دقة، لكن لا يمكن أن تكون مطلقة.
يتم نشر الرمز كمرجع للملصق.
وظيفة التحقق عبر الإنترنت ()
DIM IP، rsPrv، Sql، PrvDbState
PrvDbState = خطأ
إذا DBSTATE = خطأ إذن
دبوبن ()
PrvDbState = صحيح
نهاية إذا
تعيين rsPrv=Server.CreateObject(ADODB.Recordset)
إذا كانت الجلسة (اسم المستخدم) = إذن
Sql=select * from [Online] Where SessionID='& Session.Sessionid &'
rsPrv.Open Sql,Conn,1,3
إذا rsPrv.Eof ثم
rsPrv.AddNew
rsPrv(SessionID) = Session.SessionID
rsPrv(GroupChargeLv) = -1
rsPrv(LastActTime) = الآن()
rsPrv(UserIP) = GetIP
rsPrv(OnLineTime) = 0
rsPrv(UserWhere) = Request.ServerVariables(HTTP_REFERER)
آخر
rsPrv(UserWhere) = Request.ServerVariables(HTTP_REFERER)
rsPrv(OnLineTime) = rsPrv(OnLineTime) + DateDiff(n,rsPrv(LastActTime),Now())
rsPrv(LastActTime) = الآن()
نهاية إذا
rsPrv.Update
رسبرف.إغلاق ()
'رد.اكتب ليس تسجيل الدخول
آخر
'الاستجابة.اكتب تسجيل الدخول
Sql=select * from [Online] Where UserName='& Session(UserName) &'
rsPrv.Open sql,Conn,1,3
إذا rsPrv.Eof ثم
rsPrv.AddNew
rsPrv(SessionID) = Session.SessionID
rsPrv(اسم المستخدم) = الجلسة(اسم المستخدم)
rsPrv(GroupChargeLv) = الجلسة(GroupChargeLv)
rsPrv(LastActTime) = الآن()
rsPrv(OnLineTime) = 0
rsPrv(UserIP)= GetIP
rsPrv(UserWhere) = Request.ServerVariables(HTTP_REFERER)
آخر
إذا كان rsPrv(SessionID) <> Session.SessionID والتطبيق (LoginSet)(1) = خطأ، إذن
معلومات إلى LoginOut.asp، تم تسجيل الدخول إلى هذا الحساب في مكان آخر، يمكن أن يحتوي موقع الويب على تسجيل دخول واحد فقط لكل معرف/يمكنك محاولة تسجيل الدخول لاحقًا.
الاستجابة. النهاية ()
نهاية إذا
rsPrv(UserWhere) = Request.ServerVariables(HTTP_REFERER)
rsPrv(OnLineTime) = rsPrv(OnLineTime) + DateDiff(n,rsPrv(LastActTime),Now())
rsPrv(LastActTime)=الآن()
نهاية إذا
rsPrv.Update
رسبرف.إغلاق ()
نهاية إذا
اضبط rsPrv = لا شيء
إذا كان DateDiff(s,Application(OnLineLastDelete),Now())> Int(Application(DELETEONLINEDIFF)) ثم
التطبيق.قفل ()
التطبيق (OnLineLastDelete) = الآن
التطبيق.فتح()
Conn.ExeCute(delete from [Online] Where datedIff('s',LastActTime,Now())>& Int(Application(CHECKONLINEDIFF) &)) 'حذف الزائرين الذين ظلوا غير نشطين لمدة x ثانية
نهاية إذا
إذا كان PrvDbState = True ثم DbClose()
وظيفة النهاية