この関数を実装するには 2 つの方法があります。
1.応用
アプリケーション オブジェクトを使用する: 大規模なコミュニティを構築している場合は、ログイン ID ごとにアプリケーションを生成する必要がある場合がありますが、ログイン ユーザーが多すぎるため、サーバー リソースが消費されます。アプリケーションオブジェクトはユーザーのログイン時に生成するのは簡単ですが、ユーザーがシステムからログアウトするときに完全に解放するには、これより良い方法を今のところ見たことがないため、ここではお勧めしません~
<%
....ユーザー名 username を取得します....
ifApplication(ユーザー名)<>then
response.writeユーザーはすでにログインしています
応答.終了
エンドイフ
Application(username)=username'' にはユーザーのユーザー名が格納されます
%>
sessiononend イベントをグローバル ファイルに追加し、オフラインの場合は Application(isuserlogin)=false にします。
さらに、スレッドがハングしているかどうかを検出する必要があります。これは、サーバー オブジェクト内の特定の項目です。
(参照: http://community.csdn.net/Expert/FAQ/FAQ_Index.asp?id=815)
2.データベース+ASP
実行はより複雑になる可能性がありますが、多数のログイン ユーザーがいるシステムに適しています。
まずユーザーのデータベースを作成します。アクセスを使用して新しいonlyTOL8.mdbを作成します。
データ表 1: users はユーザー登録情報を保存します
以下のデータテーブルが設定されています: uID (自動番号) userName (文字タイプ) userPass (文字タイプ)
データ テーブル 2:onlyLogin はユーザーの一時的なログイン情報を保存します
以下のデータテーブルが設定されています。 OLname (文字型) OLtime (日付型) OLip (文字型)
データベースが構築されたら、手動でデータを users テーブルに追加し、TOL8 を userName テーブルに追加し、111 を userPass テーブルに追加します。
次に、ユーザー ログイン インターフェイスを作成し、次のコードをコピーして、onlyLogin.asp ファイルに保存します。
<html>
<頭>
<meta http-equiv=コンテンツタイプ content=text/html;
<title>異なるリージョンから同じアカウントに同時にログインすることは禁止されています</title>
</head>
<本文>
<フォーム名=form1 メソッド=ポストアクション=loginPost.asp>
ユーザー名: <input name=userName type=text id=userName size=15 maxlength=5>
パスワード: <入力名=userPass type=password id=userPass size=15 maxlength=15>
<入力タイプ=送信名=送信値=ログイン>
</form>
</body>
</html>
完了したら、新しいloginCONN.aspファイルを作成し、次のコードをコピーして保存し、データベースに接続します。
<%
薄暗い CONN_TOL8
ディムコン_T
薄暗いmmdd
mmdd=onlyTOL8.mdb
CONN_TOL8 = Server.CreateObject(ADODB.Connection) を設定します。
Conn_T=Provider=Microsoft.Jet.OLEDB.4.0;データ ソース= & Server.MapPath(&mmdd&)
エラー時は次から再開
CONN_TOL8.Conn_T を開く %>
次に、このディレクトリに存在する loginPost.asp ファイルを作成します。これが重要です。次のコードをよく見てください。
<!--#include file=loginCONN.asp -->
<%
「maxTime 時間以内にアクティブなユーザーを削除します。maxTime はloginCONN.asp ファイルで定義されています」
Conn_TOL8.Execute(DATEDIFF(''s'',OLtime, now()) > & maxTime & ) の場合のみログインから削除
''============================================= == ==============
Dim rs、ts、txt、sql、userName、userPass
Request.Form(Submit)=ログインの場合
userName=Request.Form(userName)'' フォームユーザーのログイン名を取得
userPass=Request.Form(userPass)'' フォームユーザーのログインパスワードを取得
「ここではセキュリティの問題については議論しないので、ユーザーのパスワードは暗号化されません。
Set rs = Server.CreateObject(ADODB.RECORDSET)
sql=SELECT * FROM users where userName = '' & userName & '' and userPass = '' & userPass & ''
rs.SQL を開く、CONN_TOL8,1,1
rs.eof でない場合
Call isOK(userName) '' ユーザー名とパスワードが正しければ、次のプログラムで isOK がカスタマイズされます。
それ以外
Response.Write(<a href=javascript:history.go(-1)>ユーザー名またはパスワードが間違っています</a>)
Response.End()
終了する場合
rs.閉じる
rs=何も設定しない
終了する場合
サブはOK(ユーザー名)
Dim Olip '' 現在のログイン ユーザー名によってデータベースに保存された IP
Dim Oltime '' 現在のログイン ユーザー名がデータベースに保存されているときに Web ページが最後に更新された時刻は、ユーザーがオンラインであるかどうかを計算するための重要なデータです。
Dim OLip1 '' は、現在のユーザーのログイン IP を記録し、同じユーザーであるかどうかを区別するために使用されます。
OLip1=Request.ServerVariables(REMOTE_ADDR)''ログイン情報を送信したユーザーのIPを取得します
Set ts=Conn_TOL8.execute(* FROM のみログイン WHERE OLname=''& userName & ''を選択)
if not ts.eof then '' データベースにクエリを実行して、このユーザーのログイン情報があるかどうかを確認します
OLtime=ts(OLtime)
OLip=ts(OLip)
if OLip1<>OLip および DateDiff(s,OLtime,now()) < maxTime then
前の文は、送信されたログイン ユーザー IP がデータベースに最後に記録されたユーザー IP ではないかどうかを判断し、
ユーザーの最後のアクティビティ時刻と現在の時刻の差が指定された秒数を超えない場合、ユーザーは現在オンラインであることが確認されます。
Response.Write <a href=javascript:history.go(-1)>このユーザーは現在オンラインです。他の場所からこのアカウントにログインすることはできません。 </a>
Response.End()
それ以外
それ以外の場合は、ログインが成功したと判断され、セッションに値が支払われます。
セッション(lgName)=ユーザー名
セッション(lgPass)=userPass
Response.リダイレクトログインOK.asp
応答.終了
終了する場合
それ以外
'' データベースにログイン ユーザー レコードがない場合は、次のステートメントを実行します。
薄暗い
ls=Server.CreateObject(ADODB.RECORDSET) を設定します。
ls.OpenSelect * ログインのみから,CONN_TOL8,2,2
ls.ADDNEW
ls(OL名)=ユーザー名
ls(OLip)=OLip1
ls(OLtime)=NOW()
ls.UPDATE
ls.閉じる
ls=何も設定しない
'' ログインが成功したかどうかを判断し、セッションに対価を支払います
セッション(lgName)=ユーザー名
セッション(lgPass)=userPass
Response.リダイレクトログインOK.asp
応答.終了
終了する場合
エンドサブ%>
ログインに成功すると、ページはloginOK.aspにジャンプします。
<スタイルタイプ=テキスト/css>
<!--
ボディ {背景色: #FF9900;}
-->
</スタイル>
<% IF セッション(lgName)<> then %>
ログインに成功しました! ! !以下は、指定された時間に Web ページを更新し、オンラインであるかどうかをサーバーに報告するために、Web ページにこっそり組み込まれる iframe です。
区別しやすくするために、フレーム Web ページの背景色として白を使用します。
<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>
<% その他 %>
ログインしていません
<% % の場合は終了>
次に行うことはloginFrame.aspです。
<!--#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)%> url=></head></html>;
この時点で、プログラムは完了します。このプログラムの鍵は、ユーザーがオンラインであるかどうかを判断することです。