asp判斷多使用者登入,急,怎樣判斷不讓同一個使用者名稱同時在多台機器上登陸一個系統完成後在建立一個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=javascript: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 "此使用者目前線上,你無法從其他地方登陸此帳號!"
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>
到此為止程式就完成了,這個程式的關鍵就是判定使用者是否線上