亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > ASP > 正文

同一個帳號不能同時登陸的問題

2024-05-04 11:04:55
字體:
來源:轉載
供稿:網友

〓簡介〓
有點常識的人都知道本身用asp做這種功能顯然有些牽強,因為他不像qq,msn或irc 聊天室那樣是即時通訊,他都是靠刷新網頁更改最后活動時間來獲取用戶是否在線的,所以您不要指望下面這片教程有多完美,我也只是把我的思維模式記錄下來,有啥不對的地方還請高手們多多指教!
--------------------------------------------------------------------------------
〓正文〓
首先我先向大家介紹一下我實現這個效果的思路,如果你看過我的思路后就能理解完全沒必要將這篇東西看完……

實現這個功能我只能想到兩種方式來實現:
1。數據庫+asp
做起來可能會復雜些,但是適合有大量登陸用戶的系統里。

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

因此還是讓我們來看看用數據庫+asp是如何實現同一個帳號不能同時登陸的問題的吧!

首先問用戶建立數據庫這里我們用access新建一個onlyNet118.mdb

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

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

數據庫建好后我們直接向users表中手動添加數據 userName表添加Net118,userPass表里添加111,為了能突出我們本文討論的重點,去掉不必要的廢話,所以密碼也不要加密了,用戶名也自己添加~哈哈~

好了,現在數據庫里面有用戶數據庫,下面我們來做用戶登陸界面,復制下面代碼存成onlyLogin.asp文件。
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>Net118.COM禁止同一賬號不同地區同時登陸</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_Net118
Dim Conn_T
Dim mmdd
mmdd="onlyNet118.mdb"
Set CONN_Net118 = Server.CreateObject("ADODB.Connection")
Conn_T="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath(""&mmdd&"")
on error resume next
CONN_Net118.Open Conn_T

%>

?

下面我們做一個loginPost.asp文件也存在這個目錄下,這個比較關鍵,仔細看下面的代碼:
<!--#include file="loginCONN.asp" -->
<%
'刪除maxTime時間內部活動的用戶,maxTime 在loginCONN.asp文件里面已經定義好了
Conn_Net118.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_Net118,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_Net118.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=javascript: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_Net118,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 %>
如果你看得懂asp文件一看便知道登陸成功后葉面會跳轉到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 %>
您沒有登陸哈 歡迎光臨站長資訊網:http://www.Net118.com
<% end if %>


如果你是細心之人馬上就知道下面我么要做的是loginFrame.asp?
<!--#include file="loginCONN.ASP" -->
<% CONN_Net118.Execute("Update onlyLogin Set OLtime='"& NOW() & "' where OLname = ' "& Session("lgName") & "'") %>
<html><head><meta http-equiv="refresh" content="<%=(maxTime-5)%>; url=""></head></html>

好了到此為止我們的程序就完成了,這個程序的關鍵就是判定用戶是否在線,而我也是無可奈何的是用了FRAME把定時刷新確定用戶在線的關鍵性葉面嵌套在主程序的葉面里,實際的操作中你可以把那個iframe的寬和高改為0讓一般用戶看不到,或者讓主程序的網頁底色和那個嵌套進來的定時刷新的網頁一樣就ok了。
前不久在討論區看到有人說用session和cookies之類的東西也能判定,這顯然是不可能的呀,因為他們生成的對象都是對自己起作用的,其數據內容根本無法和其他用戶共用。appliaction應該是實現這一目的的另一種方法,但是我一想到如果同是有很多用戶登陸要為每個用戶生成至少一個到三個appliaction對象就放棄了這個念頭,因為那樣我們原本可憐的服務器一定會被拖垮~

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美专区国产专区| 国产精品777| 麻豆国产精品va在线观看不卡| 日韩精品欧美国产精品忘忧草| 欧美大片在线看免费观看| 亚洲精品国产精品国自产观看浪潮| 国产精品久久久999| 亚洲电影天堂av| 国产精品爽爽爽| 国产不卡av在线| 美日韩在线视频| 日韩在线观看你懂的| 欧美日韩免费看| 91久久久久久久久| 中文字幕精品www乱入免费视频| 91在线观看欧美日韩| 91社区国产高清| 久久九九国产精品怡红院| 成人妇女免费播放久久久| 国产一区二区三区在线| 秋霞午夜一区二区| 精品亚洲男同gayvideo网站| 2019亚洲日韩新视频| 亚洲一级片在线看| 亚洲国产精久久久久久| www.欧美精品一二三区| 日韩中文字幕在线| 亚洲韩国欧洲国产日产av| 成人激情在线播放| 黑人与娇小精品av专区| 91精品91久久久久久| 成人免费观看网址| 在线精品国产欧美| 91精品国产自产91精品| 欧美激情手机在线视频| 91中文在线视频| 最近2019中文字幕mv免费看| 日韩电影中文字幕| 久久国产加勒比精品无码| 亚洲第一网中文字幕| 日韩电视剧免费观看网站| 亚洲伊人一本大道中文字幕| 日韩av影视在线| 久久久99久久精品女同性| 成人免费看吃奶视频网站| 91视频九色网站| 亚洲最大成人免费视频| 91tv亚洲精品香蕉国产一区7ujn| 欧美www视频在线观看| 国产精彩精品视频| 色婷婷久久一区二区| 欧美成人亚洲成人| 国产精品欧美久久久| 3344国产精品免费看| 欧美精品一本久久男人的天堂| 欧美丰满片xxx777| 亚洲tv在线观看| 91亚洲永久免费精品| 黄色一区二区在线| 久久久久久尹人网香蕉| 亚洲18私人小影院| 成人国产精品一区| 色播久久人人爽人人爽人人片视av| 欧美激情啊啊啊| 日本sm极度另类视频| 成人免费激情视频| 亚洲丁香婷深爱综合| 久久久精品在线| 欧美视频免费在线观看| 日韩一区二区精品视频| 久久躁狠狠躁夜夜爽| www.99久久热国产日韩欧美.com| 日韩美女在线观看一区| 日韩中文字幕在线免费观看| 欧美精品在线视频观看| 色妞在线综合亚洲欧美| 欧美xxxx综合视频| 欧美精品福利在线| 亚洲区在线播放| 精品亚洲va在线va天堂资源站| 91精品视频大全| 久久久久久久久久久av| 欧美一级大胆视频| 欧美激情视频网| 91成人在线播放| 国产精品视频导航| 国产不卡一区二区在线播放| 欧美在线视频观看免费网站| 久久久久久av| 欧美日韩国产综合视频在线观看中文| 亚洲人成伊人成综合网久久久| 久久久国产精彩视频美女艺术照福利| 国产亚洲欧洲黄色| 97精品一区二区视频在线观看| 91人人爽人人爽人人精88v| 国产成人精品综合久久久| 51精品国产黑色丝袜高跟鞋| 伊人久久五月天| 欧美大成色www永久网站婷| 亚洲欧美中文日韩在线v日本| 欧美激情精品久久久久久久变态| 4438全国亚洲精品在线观看视频| 亚洲xxx自由成熟| 欧美性xxxx极品高清hd直播| 亚洲天天在线日亚洲洲精| 亚洲欧美日韩图片| 色www亚洲国产张柏芝| 91在线无精精品一区二区| 欧美放荡办公室videos4k| 亚洲free性xxxx护士白浆| www国产亚洲精品久久网站| 97精品国产97久久久久久春色| 久久国产精品久久久久久久久久| 亚洲精品电影网在线观看| 自拍偷拍亚洲区| 久久精品一偷一偷国产| 欧美黄色小视频| 亚洲91精品在线观看| 亚洲品质视频自拍网| 日韩电影视频免费| 欧美电影在线免费观看网站| 亚洲综合av影视| 97在线精品国自产拍中文| 亚洲欧美成人网| 国产精品久久久久久亚洲影视| 北条麻妃在线一区二区| 久久偷看各类女兵18女厕嘘嘘| 97国产真实伦对白精彩视频8| 日韩在线观看免费高清完整版| 在线免费观看羞羞视频一区二区| 亚洲女人被黑人巨大进入al| 国产精品精品视频| 97成人精品区在线播放| 久久在精品线影院精品国产| 久久中文字幕视频| 92国产精品久久久久首页| 欧美午夜电影在线| 国产精品久久久久999| 亚洲自拍欧美另类| 91香蕉国产在线观看| 91av在线视频观看| 久久999免费视频| 国产精品视频网站| 在线观看中文字幕亚洲| 性欧美暴力猛交69hd| 国产69精品久久久久9| 一个人看的www久久| 九九久久久久久久久激情| 日韩精品亚洲精品| 日本免费一区二区三区视频观看| 欧美精品aaa| 91在线观看免费高清| 日韩国产高清污视频在线观看| 日韩在线中文视频| 亚洲乱码一区av黑人高潮| 97精品在线观看| 欧美激情视频一区二区| 国内精品久久久久久久| 日韩av在线精品| 日韩电影中文字幕在线观看| 日韩欧美一区二区三区久久| 亚洲男人天堂网| 国产日韩欧美中文在线播放| 欧美成人四级hd版|