您的位置: 首页 > 技术文档 > 网络编程 > 同一个帐号不能同时登陆的问题
在ASP中使用简单Java类 回到列表 动网论坛代码分析之嵌套查询
 同一个帐号不能同时登陆的问题

作者:我容易么我 时间: 2003-11-19 文档类型:转载 来自:

第 1 页 同一个帐号不能同时登陆的问题 [1]
第 2 页 同一个帐号不能同时登陆的问题 [2]

〓简介〓
有点常识的人都知道本身用asp做这种功能显然有些牵强,因为他不像qq,msn或irc 聊天室那样是即时通讯,他都是靠刷新网页更改最后活动时间来获取用户是否在线的,所以您不要指望下面这片教程有多完美,我也只是把我的思维模式记录下来,有啥不对的地方还请高手们多多指教!
--------------------------------------------------------------------------------
〓正文〓
首先我先向大家介绍一下我实现这个效果的思路,如果你看过我的思路后就能理解完全没必要将这篇东西看完……

实现这个功能我只能想到两种方式来实现:
1。数据库+asp
做起来可能会复杂些,但是适合有大量登陆用户的系统里。

2。application
用application对象:如果你做的是大型社区,你可能要为每个登陆id生成一个appliaction,这样做虽然程序上设计会简单些但登陆用户过多及其耗费服务器资源,我这里决不提倡,因为appliaction对象在用户登陆时生成很容易但是要做到真正的随着用户退出系统完全释放掉,到目前我还没看到更好的方法~

因此还是让我们来看看用数据库+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>TOL8.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_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 "<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_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 %>

出处:
责任编辑:帅青蛙

上一页 下一页 同一个帐号不能同时登陆的问题 [2]

◎进入论坛网络编程版块参加讨论

作者文章
同一个帐号不能同时登陆的问题
关键字搜索 常规搜索 推荐文档
热门搜索:CSS Fireworks 设计比赛 网页制作 web标准 用户体验 UE photoshop Dreamweaver Studio8 Flash 手绘 CG
站点最新 站点最新列表
周大福“敬•自然”设计大赛开启
国际体验设计大会7月将在京举行
中国国防科技信息中心标志征集
云计算如何让安全问题可控
云计算是多数企业唯一拥抱互联网的机会
阿里行云
云手机年终巨献,送礼标配299起
阿里巴巴CTO王坚的"云和互联网观"
1499元买真八核 云OS双蛋大促
首届COCO桌面手机主题设计大赛
栏目最新 栏目最新列表
浅谈JavaScript编程语言的编码规范
如何在illustrator中绘制台历
Ps简单绘制一个可爱的铅笔图标
数据同步算法研究
用ps作简单的作品展示页面
CSS定位机制之一:普通流
25个最佳最闪亮的Eclipse开发项目
Illustrator中制作针线缝制文字效果
Photoshop制作印刷凹凸字体
VS2010中创建自定义SQL Rule
>> 分页 首页 前页 后页 尾页 页次:1/21个记录/页 转到 页 共2个记录

蓝色理想版权申明:除部分特别声明不要转载,或者授权我站独家播发的文章外,大家可以自由转载我站点的原创文章,但原作者和来自我站的链接必须保留(非我站原创的,按照原来自一节,自行链接)。文章版权归我站和作者共有。

转载要求:转载之图片、文件,链接请不要盗链到本站,且不准打上各自站点的水印,亦不能抹去我站点水印。

特别注意:本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有,文章若有侵犯作者版权,请与我们联系,我们将立即删除修改。

您的评论
用户名:  口令:
说明:输入正确的用户名和密码才能参与评论。如果您不是本站会员,你可以注册 为本站会员。
注意:文章中的链接、内容等需要修改的错误,请用报告错误,以利文档及时修改。
不评分 1 2 3 4 5
注意:请不要在评论中含与内容无关的广告链接,违者封ID
请您注意:
·不良评论请用报告管理员,以利管理员及时删除。
·尊重网上道德,遵守中华人民共和国的各项有关法律法规
·承担一切因您的行为而直接或间接导致的民事或刑事法律责任
·本站评论管理人员有权保留或删除其管辖评论中的任意内容
·您在本站发表的作品,本站有权在网站内转载或引用
·参与本评论即表明您已经阅读并接受上述条款
推荐文档 | 打印文档 | 评论文档 | 报告错误  
专业书推荐 更多内容
网站可用性测试及优化指南
《写给大家看的色彩书1》
《跟我去香港》
众妙之门—网站UI 设计之道
《Flex 4.0 RIA开发宝典》
《赢在设计》
犀利开发—jQuery内核详解与实践
作品集 更多内容

杂⑦杂⑧ Gold NORMANA V2