Ma solution à ce problème est que l'utilisateur a un problème d'intervalle de temps actif. Ceux qui dépassent cet intervalle de temps actif peuvent être considérés comme hors ligne. Ce dernier peut être connecté. Si ce dernier n'est pas connecté, cela ne signifie pas que le premier doit se reconnecter. Parce que sa séance est toujours là. Ce temps ne peut être réglé que le plus petit et le plus précis possible, mais il ne peut pas être absolu.
Le code est affiché pour référence de l’affiche.
Fonction CheckOnline()
IP DIM, rsPrv, SQL, PrvDbState
PrvDbState = Faux
Si DBSTATE = False Alors
DbOuvert()
PrvDbState = Vrai
Fin si
Définir rsPrv=Server.CreateObject(ADODB.Recordset)
Si Session (Nom d'utilisateur) = alors
Sql=select * from [Online] où SessionID='& Session.Sessionid &'
rsPrv.Open SQL,Conn,1,3
Si rsPrv.Eof alors
rsPrv.AddNew
rsPrv(SessionID) = Session.SessionID
rsPrv (GroupChargeLv) = -1
rsPrv(LastActTime) = Maintenant()
rsPrv (UserIP) = GetIP
rsPrv(OnLineTime) = 0
rsPrv(UserWhere) = Request.ServerVariables(HTTP_REFERER)
Autre
rsPrv(UserWhere) = Request.ServerVariables(HTTP_REFERER)
rsPrv(OnLineTime) = rsPrv(OnLineTime) + DateDiff(n,rsPrv(LastActTime),Now())
rsPrv(LastActTime) = Maintenant()
Fin si
rsPrv.Mise à jour
rsPrv.Close()
'response.Write notlogin
Autre
'response.Write connecté
Sql=select * from [Online] où UserName='& Session(UserName) &'
rsPrv.Open sql,Conn,1,3
Si rsPrv.Eof alors
rsPrv.AddNew
rsPrv(SessionID) = Session.SessionID
rsPrv (Nom d'utilisateur) = Session (Nom d'utilisateur)
rsPrv (GroupChargeLv) = Session (GroupChargeLv)
rsPrv(LastActTime) = Maintenant()
rsPrv(OnLineTime) = 0
rsPrv (UserIP) = GetIP
rsPrv(UserWhere) = Request.ServerVariables(HTTP_REFERER)
Autre
Si rsPrv(SessionID) <> Session.SessionID et Application(LoginSet)(1) = False Alors
InfoTo LoginOut.asp, ce compte a été connecté ailleurs, le site Web ne peut avoir qu'une seule connexion par ID/nVous pouvez essayer de vous connecter plus tard.
Réponse.Fin()
Fin si
rsPrv(UserWhere) = Request.ServerVariables(HTTP_REFERER)
rsPrv(OnLineTime) = rsPrv(OnLineTime) + DateDiff(n,rsPrv(LastActTime),Now())
rsPrv(LastActTime)=Maintenant()
Fin si
rsPrv.Mise à jour
rsPrv.Close()
Fin si
Définir rsPrv = Rien
Si DateDiff(s,Application(OnLineLastDelete),Now()) > Int(Application(DELETEONLINEDIFF)) Alors
Application.Lock()
Application (OnLineLastDelete) = maintenant
Application.UnLock()
Conn.ExeCute(delete from [Online]where datedIff('s',LastActTime,Now())>& Int(Application(CHECKONLINEDIFF) &)) 'Supprimer les visiteurs qui ont été inactifs pendant x secondes
Fin si
Si PrvDbState = True alors DbClose()
Fonction de fin