Il existe deux manières d'implémenter cette fonction :
1. application
Utilisez l'objet application : si vous créez une grande communauté, vous devrez peut-être générer une application pour chaque identifiant de connexion. Bien que la conception du programme soit plus simple, il y aura trop d'utilisateurs connectés et cela consommera des ressources du serveur. n'est pas recommandé ici car l'objet appliaction Il est facile à générer lorsque l'utilisateur se connecte, mais pour le libérer vraiment complètement lorsque l'utilisateur se déconnecte du système, je n'ai pas vu de meilleure méthode jusqu'à présent ~
<%
.....Obtenir le nom d'utilisateur nom d'utilisateur.....
ifApplication (nom d'utilisateur) <> alors
réponse.writeL'utilisateur est déjà connecté
réponse.end
fin
Application(username)=username'' stocke le nom d'utilisateur de l'utilisateur
%>
Ajoutez l'événement sessiononend au fichier global et Application(isuserlogin)=false en mode hors connexion
De plus, il est nécessaire de détecter si le thread est bloqué. Il existe une méthode spéciale qui consiste à utiliser un certain élément dans l'objet serveur.
(Référence : http://community.csdn.net/Expert/FAQ/FAQ_Index.asp?id=815)
2. base de données + asp
Cela peut être plus compliqué à réaliser, mais cela convient aux systèmes avec un grand nombre d'utilisateurs connectés.
Créez d’abord une base de données pour l’utilisateur – utilisez l’accès pour créer un nouveau onlyTOL8.mdb
Tableau de données 1 : les utilisateurs stockent les informations d'enregistrement des utilisateurs
Les tables de données suivantes sont configurées : uID (numéro automatique) userName (type de caractère) userPass (type de caractère)
Tableau de données 2 : onlyLogin stocke les informations de connexion temporaires de l'utilisateur
Les tables de données suivantes sont configurées : OLname (type de caractère) OLtime (type de date) OLip (type de caractère)
Une fois la base de données créée, ajoutez manuellement des données à la table des utilisateurs, ajoutez TOL8 à la table userName et ajoutez 111 à la table userPass.
Ensuite, créez l'interface de connexion utilisateur. Copiez le code suivant et enregistrez-le dans le fichier onlyLogin.asp.
<html>
<tête>
<méta http-equiv=Content-Type content=text/html; charset=gb2312>
<title>Il est interdit de se connecter au même compte depuis différentes régions en même temps</title>
</tête>
<corps>
<nom du formulaire=form1 méthode=post action=loginPost.asp>
Nom d'utilisateur : <input name=userName type=text id=userName size=15 maxlength=5>
Mot de passe : <input name=userPass type=password id=userPass size=15 maxlength=15>
<type d'entrée=nom de soumission=valeur de soumission=Connexion>
</form>
</corps>
</html>
Une fois terminé, créez un nouveau fichier loginCONN.asp, copiez le code suivant et enregistrez-le pour vous connecter à la base de données.
<%
Faible CONN_TOL8
Dim Conn_T
Dim mmjj
mmjj=uniquementTOL8.mdb
Définir CONN_TOL8 = Server.CreateObject (ADODB.Connection)
Conn_T=Provider=Microsoft.Jet.OLEDB.4.0;Source de données= & Server.MapPath(&mmjj&)
en cas d'erreur, reprendre ensuite
CONN_TOL8.Ouvrir Conn_T %>
Ensuite, créez un fichier loginPost.asp qui existe également dans ce répertoire. C'est la clé. Regardez attentivement le code suivant :
<!--#include file=loginCONN.asp -->
<%
''Supprimez les utilisateurs actifs dans le délai maxTime, maxTime a été défini dans le fichier loginCONN.asp
Conn_TOL8.Execute(Supprimer de onlyLogin où DATEDIFF(''s'',OLtime, now()) > & maxTime & )
''============================================== == ==============
Dim rs, ts, txt, sql, nom d'utilisateur, userPass
si Request.Form(Submit)=Connexion alors
userName=Request.Form(userName)'' Obtenir le nom de connexion de l'utilisateur du formulaire
userPass=Request.Form(userPass)'' Obtenir le mot de passe de connexion de l'utilisateur du formulaire
« Puisque nous ne discutons pas ici des problèmes de sécurité, les mots de passe des utilisateurs ne sont pas cryptés.
Définir rs = Server.CreateObject(ADODB.RECORDSET)
sql=SELECT * FROM utilisateurs où userName = '' & userName & '' et userPass = '' & userPass & ''
rs.Open SQL, CONN_TOL8,1,1
SI ce n'est pas rs.eof alors
Appelez isOK(userName) '' Si le nom d'utilisateur et le mot de passe sont corrects, isOK sera personnalisé dans le programme suivant.
autre
Response.Write(<a href=javascript:history.go(-1)>Nom d'utilisateur ou mot de passe erroné</a>)
Réponse.Fin()
finir si
rs.Fermer
Définir rs=Rien
finir si
Le sous est OK (nom d'utilisateur)
Dim Olip '' IP enregistrée par le nom d'utilisateur de connexion actuel dans la base de données
Dim Oltime '' La dernière fois que la page Web a été actualisée lorsque le nom d'utilisateur de connexion actuel est enregistré dans la base de données est une donnée importante pour calculer si l'utilisateur est en ligne.
Dim OLip1'' enregistre l'adresse IP de connexion de l'utilisateur actuel, utilisée pour distinguer s'il s'agit du même utilisateur.
OLip1=Request.ServerVariables(REMOTE_ADDR)''Obtenir l'adresse IP de l'utilisateur qui a soumis les informations de connexion
Définir ts=Conn_TOL8.execute(Sélectionner * FROM onlyLogin WHERE OLname=''& userName & '')
sinon ts.eof alors '' Interrogez la base de données pour voir s'il existe des informations de connexion pour cet utilisateur
OLtime=ts(OLtime)
OLip=ts(OLip)
si OLip1<>OLip et DateDiff(s,OLtime,now()) < maxTime alors
'' La phrase précédente détermine si l'adresse IP de l'utilisateur de connexion soumise n'est pas la dernière adresse IP de l'utilisateur enregistrée dans la base de données et
'' Si la différence entre la dernière durée d'activité de l'utilisateur et l'heure actuelle ne dépasse pas le nombre de secondes spécifié, il est confirmé que l'utilisateur est actuellement en ligne.
Response.Write <a href=javascript:history.go(-1)>Cet utilisateur est actuellement en ligne Vous ne pouvez pas vous connecter à ce compte depuis d'autres endroits ! </a>
Réponse.Fin()
autre
'' Sinon, il est déterminé que la connexion a réussi et la valeur est versée à la session.
Session (lgName) = nom d'utilisateur
Session (lgPass) = utilisateurPass
Réponse.Redirection loginOK.asp
Réponse.Fin
finir si
autre
''Si la base de données n'a pas d'enregistrement d'utilisateur de connexion, exécutez l'instruction suivante
Dim ls
Définir ls=Server.CreateObject(ADODB.RECORDSET)
ls.OpenSelect * Depuis onlyLogin, CONN_TOL8,2,2
ls.ADDNEW
ls(OLname)=nom d'utilisateur
ls(OLip)=OLip1
ls(OLtime)=MAINTENANT()
ls.UPDATE
ls.Fermer
Définir ls=Rien
'' Déterminez la connexion réussie et payez la valeur de la session
Session (lgName) = nom d'utilisateur
Session (lgPass) = utilisateurPass
Réponse.Redirection loginOK.asp
Réponse.Fin
finir si
Fin du sous-%>
Après une connexion réussie, la page passera à loginOK.asp
<type de style=texte/css>
<!--
corps {couleur de fond : #FF9900 ;}
-->
</style>
<% SI Session (lgName) <> puis %>
Vous vous êtes connecté avec succès ! ! ! Ce qui suit est une iframe qui est introduite dans la page Web afin d'actualiser la page Web à l'heure spécifiée et de signaler au serveur si vous êtes en ligne.
Afin de faciliter la distinction, nous utilisons le blanc comme couleur de fond pour la page Web du cadre.
<iframe border=0 name=new_date marginwidth=0 framespacing=0 marginheight=0 src=loginFrame.asp
frameborder=0 noResize width=100 scrolling=no height=30 vspale=0></iframe>
<% autre %>
Vous n'êtes pas connecté
<% fin si %>
La prochaine chose à faire est loginFrame.asp
<!--#include file=loginCONN.ASP -->
<% CONN_TOL8.Execute(Mise à jour uniquementLogin Set OLtime=''& NOW() & '' où OLname = '' & Session(lgName) & '') %>
<html><head><meta http-equiv=refresh content=<%=(maxTime-5)%>;
À ce stade, le programme est terminé. La clé de ce programme est de déterminer si l'utilisateur est en ligne.