亚洲韩日午夜视频,欧美日韩在线精品一区二区三区,韩国超清无码一区二区三区,亚洲国产成人影院播放,久草新在线,在线看片AV色

您好,歡迎來到思海網絡,我們將竭誠為您提供優質的服務! 誠征網絡推廣 | 網站備案 | 幫助中心 | 軟件下載 | 購買流程 | 付款方式 | 聯系我們 [ 會員登錄/注冊 ]
促銷推廣
客服中心
業務咨詢
有事點擊這里…  531199185
有事點擊這里…  61352289
點擊這里給我發消息  81721488
有事點擊這里…  376585780
有事點擊這里…  872642803
有事點擊這里…  459248018
有事點擊這里…  61352288
有事點擊這里…  380791050
技術支持
有事點擊這里…  714236853
有事點擊這里…  719304487
有事點擊這里…  1208894568
有事點擊這里…  61352289
在線客服
有事點擊這里…  531199185
有事點擊這里…  61352288
有事點擊這里…  983054746
有事點擊這里…  893984210
當前位置:首頁 >> 技術文章 >> 文章瀏覽
技術文章

ASP防止同時登陸的問題

添加時間:2014-9-15 3:20:53  添加: 思海網絡 

實現這個功能可有兩種方式:

1。application

用application對象:如果做的是大型社區,可能要為每個登陸id生成一個appliaction,這樣做雖然程序上設計會簡單些但登陸用戶過多及其耗費服務器資源,這里決不提倡,因為appliaction對象在用戶登陸時生成很容易, 但是要做到真正的隨著用戶退出系統完全釋放,到目前還沒看到更好的方法~

以下為引用的內容:

<%  
.....取用戶名username.....  
if  Application(username)<>""  then  
     response.write  "該用戶已經登錄"  
     response.end  
end  if  
Application(username)=username  ''存入該用戶的用戶名 
%>

在global文件中加上session  onend事件,下線時Application("isuserlogin")=false  
此外還要檢測是否吊線,有專門的辦法,是server對象里的某項 

(參: http://community.csdn.net/Expert/FAQ/FAQ_Index.asp?id=815)

2。數據庫+asp 
做起來可能會復雜些,但是適合有大量登陸用戶的系統。

首先為用戶建立數據庫-用access新建一個onlyTOL8.mdb

數據表1: users 存放用戶注冊資料 
下設數據表:uID(自動編號) userName(字符型) userPass(字符型)

數據表2: onlyLogin 存放用戶臨時登陸信息 
下設數據表: OLname(字符型) OLtime(日期型) OLip(字符型)

數據庫建好后直接向users表中手動添加數據 userName表添加TOL8,userPass表里添加111,

下面來做用戶登陸界面,復制下面代碼存成onlyLogin.asp文件。

以下為引用的內容:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>禁止同一賬號不同地區同時登陸</title>
</head>
<body>
<form name="form1" method="post" action="loginPost.asp">
用戶名:<input name="userName" type="text" id="userName" size="15" maxlength="5">
密碼:<input name="userPass" type="password" id="userPass" size="15" maxlength="15">
<input type="submit" name="Submit" value="Login">
</form>
</body>
</html>

完成后在新建一個loginCONN.asp文件復制下面的代碼保存用于連接數據庫

以下為引用的內容:

<%
Dim CONN_TOL8
Dim Conn_T
Dim mmdd
mmdd="onlyTOL8.mdb"
Set CONN_TOL8 = Server.CreateObject("ADODB.Connection")
Conn_T="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath(""&mmdd&"")
on error resume next
CONN_TOL8.Open Conn_T %>

下面做一個loginPost.asp文件也存在這個目錄下,這是關鍵,仔細看下面的代碼:

以下為引用的內容:

<!--#include file="loginCONN.asp" -->
<%
''刪除maxTime時間內部活動的用戶,maxTime 在loginCONN.asp文件里面已經定義好了
Conn_TOL8.Execute("Delete From onlyLogin where DATEDIFF(''s'',OLtime, now()) > "& maxTime & "")
''================================================================
Dim rs, ts, txt, sql, userName, userPass
if Request.Form("Submit")="Login" then
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.Open sql, CONN_TOL8,1,1
IF not rs.eof then
Call isOK(userName) '' 用戶名密碼正確調用次過程,isOK將會在下面的程序中定制。
else
Response.Write("<a href=java:history.go(-1)>用戶名或密碼錯誤</a>")
Response.End()
end if
rs.Close
Set rs=Nothing
end if
Sub isOK(userName)
Dim Olip '' 數據庫中當前登陸用戶名保存的ip
Dim Oltime '' 數據庫中當前登陸用戶名保存的最后刷新網頁的時間,是計算用戶是否在線的重要數據。
Dim OLip1 '' 記錄當前用戶登陸ip,用來區分是否為同一用戶的標示
OLip1=Request.ServerVariables("REMOTE_ADDR")''取得提交登陸信息用戶的IP
Set ts=Conn_TOL8.execute("Select * FROM onlyLogin WHERE OLname=''"& userName & "''")
if not ts.eof then '' 查詢數據庫是否有此用戶的登陸過的信息
OLtime=ts("OLtime")
OLip=ts("OLip")
if OLip1<>OLip and DateDiff("s",OLtime,now()) < maxTime then 
''上句判斷如果提交登陸用戶ip不是數據庫中最后紀錄的用戶ip并且
''用戶的最后活動時間和當前時間相隔并沒超過規定的秒數則確認此用戶當前在線
Response.Write "<a href=java:history.go(-1)>此用戶目前在線,你無法從其他地方登陸此賬號!</a>"
Response.End()
else
''否則的話判定登陸成功付值給session
Session("lgName")=userName
Session("lgPass")=userPass
Response.Redirect "loginOK.asp"
Response.End
end if
else
''如果數據庫沒有次登陸用戶紀錄則執行下面的語句
Dim ls
Set ls=Server.CreateObject("ADODB.RECORDSET")
ls.Open"Select * From onlyLogin",CONN_TOL8,2,2
ls.ADDNEW
ls("OLname")=userName
ls("OLip")=OLip1
ls("OLtime")=NOW()
ls.UPDATE
ls.Close
Set ls=Nothing
''判定登陸成功付值給session
Session("lgName")=userName
Session("lgPass")=userPass
Response.Redirect "loginOK.asp"
Response.End
end if
End Sub %>

登陸成功后葉面會跳轉到loginOK.asp

以下為引用的內容:

<style type="text/css">
<!--
body {background-color: #FF9900;}
-->
</style>
<% IF Session("lgName")<>"" then %>
您登陸成功了!!下面是潛入網頁內的iframe為的是在規定的時間刷新網頁向服務器報告你是否在線
為了便于區分,frame網頁我們采用了白色作為底色
<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> 
<% else %>


您沒有登陸哈

以下為引用的內容:

<% end if %>

下面要做的是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>

到此為止程序就完成了,這個程序的關鍵就是判定用戶是否在線。

關鍵字:ASP、服務器、程序

分享到:

頂部 】 【 關閉
版權所有:佛山思海電腦網絡有限公司 ©1998-2024 All Rights Reserved.
聯系電話:(0757)22630313、22633833
中華人民共和國增值電信業務經營許可證: 粵B1.B2-20030321 備案號:粵B2-20030321-1
網站公安備案編號:44060602000007 交互式欄目專項備案編號:200303DD003  
察察 工商 網安 舉報有獎  警警  手機打開網站