asp防止同时登陆的问题(2)

时间:2007-10-26 12:19:00 

完成后在新建一个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 %>


登陆成功后叶面会跳转到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>



到此为止程序就完成了,这个程序的关键就是判定用户是否在线

标签:登陆,application,数据库
0
投稿

猜你喜欢

  • VueJs单页应用实现微信网页授权及微信分享功能示例

    2024-04-16 09:35:50
  • 利用nohup来开启python文件的方法

    2023-05-08 07:51:29
  • JS+CSS实现闪烁字体效果代码

    2024-04-18 09:31:04
  • Python之捕捉异常详解

    2022-06-10 02:27:30
  • Python实现敲击木鱼积累功德小项目

    2021-02-11 05:29:03
  • JS HTML5拖拽上传图片预览

    2024-04-22 13:03:38
  • Python中Numpy的深拷贝和浅拷贝

    2021-10-04 21:08:43
  • 微信小程序如何处理token过期问题

    2023-07-02 05:23:54
  • 详解Python执行py文件是否需要可执行权限

    2021-01-19 10:52:53
  • asp加载access数据库并生成XML文件范例

    2008-07-22 12:41:00
  • python3 简单实现组合设计模式

    2023-06-12 19:15:50
  • Python内置函数——__import__ 的使用方法

    2022-07-18 21:02:18
  • python回溯法实现数组全排列输出实例分析

    2023-06-18 20:42:27
  • python使用pandas读写excel文件的方法实例

    2021-04-09 17:44:26
  • SQL的密码管理的六个危险判断

    2012-01-05 19:07:21
  • pandas创建DataFrame的7种方法小结

    2022-01-11 19:26:18
  • 利用Python实现最小二乘法与梯度下降算法

    2021-07-19 03:59:49
  • sql server常用命令行操作(启动、停止、暂停)

    2012-01-05 19:02:48
  • Linux中Python 环境软件包安装步骤

    2021-04-10 02:41:38
  • XMLTextReader和XmlDocument读取XML文件的比较

    2008-09-05 16:04:00
  • asp之家 网络编程 m.aspxhome.com