Es gibt zwei Möglichkeiten, diese Funktion zu implementieren:
1. Anwendung
Verwenden Sie Anwendungsobjekte: Wenn Sie eine große Community aufbauen, müssen Sie möglicherweise für jede Anmelde-ID eine Anwendung generieren. Obwohl das Programmdesign einfacher ist, sind zu viele Benutzer angemeldet und es werden Serverressourcen verbraucht Dies wird hier nicht empfohlen, da das Anwendungsobjekt einfach zu generieren ist, wenn sich der Benutzer anmeldet. Um es jedoch wirklich vollständig freizugeben, wenn sich der Benutzer vom System abmeldet, habe ich bisher keine bessere Methode gesehen ~
<%
.....Holen Sie sich den Benutzernamen Benutzername.....
ifApplication(Benutzername)<>then
Response.writeDer Benutzer ist bereits angemeldet
Antwort.Ende
endif
„Application(username)=username“ speichert den Benutzernamen des Benutzers
%>
Fügen Sie das sessiononend-Ereignis zur globalen Datei hinzu und Application(isuserlogin)=false, wenn Sie offline sind
Darüber hinaus muss festgestellt werden, ob der Thread hängt. Es gibt eine spezielle Methode, bei der es sich um ein bestimmtes Element im Serverobjekt handelt.
(Referenz: http://community.csdn.net/Expert/FAQ/FAQ_Index.asp?id=815)
2. Datenbank + ASP
Dies ist möglicherweise komplizierter, eignet sich jedoch für Systeme mit einer großen Anzahl angemeldeter Benutzer.
Erstellen Sie zunächst eine Datenbank für den Benutzer – verwenden Sie den Zugriff, um eine neue onlyTOL8.mdb zu erstellen
Datentabelle 1: Benutzer speichert Benutzerregistrierungsinformationen
Folgende Datentabellen werden eingerichtet: uID (automatische Nummer) userName (Zeichentyp) userPass (Zeichentyp)
Datentabelle 2: onlyLogin speichert temporäre Anmeldeinformationen des Benutzers
Folgende Datentabellen werden eingerichtet: OLname (Zeichentyp) OLtime (Datumstyp) OLip (Zeichentyp)
Nachdem die Datenbank erstellt wurde, fügen Sie manuell Daten zur Tabelle „users“ hinzu, fügen Sie TOL8 zur Tabelle „userName“ hinzu und fügen Sie 111 zur Tabelle „userPass“ hinzu.
Erstellen Sie als Nächstes die Benutzeranmeldeschnittstelle. Kopieren Sie den folgenden Code und speichern Sie ihn in der Datei onlyLogin.asp.
<html>
<Kopf>
<meta http-equiv=Content-Type content=text/html;
<title>Es ist verboten, sich gleichzeitig aus verschiedenen Regionen bei demselben Konto anzumelden</title>
</head>
<Körper>
<form name=form1 method=post action=loginPost.asp>
Benutzername: <input name=userName type=text id=userName size=15 maxlength=5>
Passwort: <Eingabename=userPass type=password id=userPass size=15 maxlength=15>
<Eingabetyp=Submit-Name=Submit-Wert=Login>
</form>
</body>
</html>
Erstellen Sie nach Abschluss eine neue loginCONN.asp-Datei, kopieren Sie den folgenden Code und speichern Sie ihn, um eine Verbindung zur Datenbank herzustellen.
<%
Dimmen Sie CONN_TOL8
Dim Conn_T
Dim mmtt
mmdd=onlyTOL8.mdb
Setze CONN_TOL8 = Server.CreateObject(ADODB.Connection)
Conn_T=Provider=Microsoft.Jet.OLEDB.4.0;Data Source= & Server.MapPath(&mmdd&)
Bei Fehler als nächstes fortfahren
CONN_TOL8.Conn_T %> öffnen
Als nächstes erstellen Sie eine loginPost.asp-Datei, die ebenfalls in diesem Verzeichnis vorhanden ist. Dies ist der Schlüssel.
<!--#include file=loginCONN.asp -->
<%
''Löschen Sie aktive Benutzer innerhalb der maxTime-Zeit. maxTime wurde in der Datei loginCONN.asp definiert
Conn_TOL8.Execute(Delete From onlyLogin where DATEDIFF(''s'',OLtime, now()) > & maxTime & )
''============================================= ================
Dimmen Sie rs, ts, txt, sql, userName, userPass
wenn Request.Form(Submit)=Login dann
userName=Request.Form(userName)'' Anmeldenamen des Formularbenutzers abrufen
userPass=Request.Form(userPass)'' Formularbenutzer-Login-Passwort abrufen
„Da es hier nicht um Sicherheitsfragen geht, werden Benutzerpasswörter nicht verschlüsselt.“
Setze rs = Server.CreateObject(ADODB.RECORDSET)
sql=SELECT * FROM users where userName = '' & userName & '' und userPass = '' & userPass & ''
rs.SQL öffnen, CONN_TOL8,1,1
WENN nicht rs.eof dann
Call isOK(userName) '' Wenn der Benutzername und das Passwort korrekt sind, wird dieser Vorgang im folgenden Programm angepasst.
anders
Response.Write(<a href=javascript:history.go(-1)>Falscher Benutzername oder Passwort</a>)
Response.End()
Ende wenn
rs.Schließen
Setze rs=Nothing
Ende wenn
Sub isOK(userName)
Dim Olip '' IP wird vom aktuellen Login-Benutzernamen in der Datenbank gespeichert
Dim Oltime '' Der Zeitpunkt der letzten Aktualisierung der Webseite, wenn der aktuelle Login-Benutzername in der Datenbank gespeichert wird, ist ein wichtiges Datum für die Berechnung, ob der Benutzer online ist.
Dim OLip1 '' zeichnet die Anmelde-IP des aktuellen Benutzers auf und dient zur Unterscheidung, ob es sich um denselben Benutzer handelt.
OLip1=Request.ServerVariables(REMOTE_ADDR)''Rufen Sie die IP des Benutzers ab, der Anmeldeinformationen übermittelt hat
Setze ts=Conn_TOL8.execute(Select * FROM onlyLogin WHERE OLname=''& userName & '')
Wenn nicht ts.eof, dann '' Fragen Sie die Datenbank ab, um zu sehen, ob Anmeldeinformationen für diesen Benutzer vorhanden sind
OLtime=ts(OLtime)
OLip=ts(OLip)
wenn OLip1<>OLip und DateDiff(s,OLtime,now()) < maxTime dann
''Der vorherige Satz bestimmt, ob die übermittelte Login-Benutzer-IP nicht die zuletzt in der Datenbank aufgezeichnete Benutzer-IP ist und
„Wenn die Differenz zwischen der letzten Aktivitätszeit des Benutzers und der aktuellen Zeit die angegebene Anzahl von Sekunden nicht überschreitet, wird bestätigt, dass der Benutzer derzeit online ist.“
Response.Write <a href=javascript:history.go(-1)>Dieser Benutzer ist derzeit online. Sie können sich nicht von anderen Orten aus bei diesem Konto anmelden. </a>
Response.End()
anders
'' Andernfalls wird festgestellt, dass die Anmeldung erfolgreich war, und der Wert wird an die Sitzung ausgezahlt.
Sitzung(lgName)=Benutzername
Session(lgPass)=userPass
Response.Redirect loginOK.asp
Antwort.Ende
Ende wenn
anders
''Wenn die Datenbank keinen Login-Benutzerdatensatz hat, führen Sie die folgende Anweisung aus
Dim ls
Setze ls=Server.CreateObject(ADODB.RECORDSET)
ls.OpenSelect * From onlyLogin,CONN_TOL8,2,2
ls.ADDNEW
ls(OLname)=Benutzername
ls(OLip)=OLip1
ls(OLtime)=NOW()
ls.UPDATE
ls.Schließen
Setze ls=Nothing
„Stellen Sie fest, dass die Anmeldung erfolgreich war, und zahlen Sie den Wert für die Sitzung.“
Sitzung(lgName)=Benutzername
Session(lgPass)=userPass
Response.Redirect loginOK.asp
Antwort.Ende
Ende wenn
Sub %> beenden
Nach erfolgreicher Anmeldung springt die Seite zu loginOK.asp
<style type=text/css>
<!--
Körper {Hintergrundfarbe: #FF9900;}
->
</style>
<% IF Session(lgName)<> dann %>
Sie haben sich erfolgreich angemeldet! ! ! Das Folgende ist ein Iframe, der in die Webseite eingeschleust wird, um die Webseite zum angegebenen Zeitpunkt zu aktualisieren und dem Server zu melden, ob Sie online sind.
Um die Unterscheidung zu erleichtern, verwenden wir Weiß als Hintergrundfarbe für die Rahmenwebseite.
<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>
<% sonst %>
Sie sind nicht angemeldet
<% end if %>
Als nächstes müssen Sie loginFrame.asp verwenden
<!--#include file=loginCONN.ASP -->
<% CONN_TOL8.Execute(Update onlyLogin Set OLtime=''& NOW() & '' where OLname = '' & Session(lgName) & '') %>
<html><head><meta http-equiv=refresh content=<%=(maxTime-5)%>;
An diesem Punkt ist das Programm abgeschlossen. Der Schlüssel zu diesem Programm besteht darin, festzustellen, ob der Benutzer online ist.