|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
由于ASP还是一种Script语言所没除了大量使用组件外,没有办法提高其工作效率。它必须面对即时编绎的时间考验,同时我们还不知其背后的组件会是一个什么样的状况;成绩完成这个功效可有两种体例:
1。application
用application工具:假如做的是年夜型社区,大概要为每一个上岸id天生一个appliaction,如许做固然程序上计划会复杂些但上岸用户过量及其泯灭服务器资本,这里决不倡始,由于appliaction工具在用户上岸时天生很简单,可是要做到真实的跟着用户加入体系完整开释,到今朝还没看到更好的办法~
<%
.....取用户名username.....
ifApplication(username)""then
response.write"该用户已登录"
response.end
endif
Application(username)=username存进该用户的用户名
%>
在global文件中加上sessiononend事务,下线时Application("isuserlogin")=false
别的还要检测是不是吊线,有专门的举措,是server工具里的某项
2。数据库+asp
做起来大概会庞大些,可是合适有大批上岸用户的体系。
起首为用户创建数据库-用access新建一个onlyTOL8.mdb
数据表1:users寄存用户注册材料
下设数据表:uID(主动编号)userName(字符型)userPass(字符型)
数据表2:onlyLogin寄存用户一时上岸信息
下设数据表:OLname(字符型)OLtime(日期型)OLip(字符型)
数据库建好后间接向users表中手动增加数据userName表增加TOL8,userPass内外增加111,
上面来做用户上岸界面,复制上面代码存成onlyLogin.asp文件。
<html>
<head>
<metahttp-equiv="Content-Type"content="text/html;charset=gb2312">
<title>克制统一账号分歧区域同时上岸</title>
</head>
<body>
<formname="form1"method="post"action="loginPost.asp">
用户名:<inputname="userName"type="text"id="userName"size="15"maxlength="5">
暗码:<inputname="userPass"type="password"id="userPass"size="15"maxlength="15">
<inputtype="submit"name="Submit"value="Login">
</form>
</body>
</html>
完成后在新建一个loginCONN.asp文件复制上面的代码保留用于毗连数据库
<%
DimCONN_TOL8
DimConn_T
Dimmmdd
mmdd="onlyTOL8.mdb"
SetCONN_TOL8=Server.CreateObject("ADODB.Connection")
Conn_T="Provider=Microsoft.Jet.OLEDB.4.0;DataSource="&Server.MapPath(""&mmdd&"")
onerrorresumenext
CONN_TOL8.OpenConn_T%>
上面做一个loginPost.asp文件也存在这个目次下,这是关头,细心看上面的代码:
<!--#includefile="loginCONN.asp"-->
<%
删除maxTime工夫外部举动的用户,maxTime在loginCONN.asp文件内里已界说好了
Conn_TOL8.Execute("DeleteFromonlyLoginwhereDATEDIFF(s,OLtime,now())>"&maxTime&"")
================================================================
Dimrs,ts,txt,sql,userName,userPass
ifRequest.Form("Submit")="Login"then
userName=Request.Form("userName")猎取表单用户上岸名
userPass=Request.Form("userPass")猎取表单用户上岸暗码
因为我们这里会商的不是平安成绩以是用户暗码都没有加密
Setrs=Server.CreateObject("ADODB.RECORDSET")
sql="SELECT*FROMuserswhereuserName="&userName&"anduserPass="&userPass&""
rs.Opensql,CONN_TOL8,1,1
IFnotrs.eofthen
CallisOK(userName)用户名暗码准确挪用次历程,isOK将会鄙人面的程序中定制。
else
Response.Write("<ahref=javascript:history.go(-1)>用户名或暗码毛病</a>")
Response.End()
endif
rs.Close
Setrs=Nothing
endif
SubisOK(userName)
DimOlip数据库中以后上岸用户名保留的ip
DimOltime数据库中以后上岸用户名保留的最初革新网页的工夫,是盘算用户是不是在线的主要数据。
DimOLip1纪录以后用户上岸ip,用来辨别是不是为统一用户的标示
OLip1=Request.ServerVariables("REMOTE_ADDR")获得提交上岸信息用户的IP
Setts=Conn_TOL8.execute("Select*FROMonlyLoginWHEREOLname="&userName&"")
ifnotts.eofthen查询数据库是不是有此用户的上岸过的信息
OLtime=ts("OLtime")
OLip=ts("OLip")
ifOLip1OLipandDateDiff("s",OLtime,now())<maxTimethen
上句判别假如提交上岸用户ip不是数据库中最初记录的用户ip而且
用户的最初举动工夫和以后工夫相隔并没凌驾划定的秒数则确认此用户以后在线
Response.Write"<ahref=javascript:history.go(-1)>此用户今朝在线,你没法从其他中央上岸此账号!</a>"
Response.End()
else
不然的话判断上岸乐成付值给session
Session("lgName")=userName
Session("lgPass")=userPass
Response.Redirect"loginOK.asp"
Response.End
endif
else
假如数据库没有次上岸用户记录则实行上面的语句
Dimls
Setls=Server.CreateObject("ADODB.RECORDSET")
ls.Open"Select*FromonlyLogin",CONN_TOL8,2,2
ls.ADDNEW
ls("OLname")=userName
ls("OLip")=OLip1
ls("OLtime")=NOW()
ls.UPDATE
ls.Close
Setls=Nothing
判断上岸乐成付值给session
Session("lgName")=userName
Session("lgPass")=userPass
Response.Redirect"loginOK.asp"
Response.End
endif
EndSub%>
上岸乐成后叶面会跳转到loginOK.asp
<styletype="text/CSS">
<!--
body{background-color:#FF9900;}
-->
</style>
<%IFSession("lgName")""then%>
您上岸乐成了!!!上面是潜进网页内的iframe为的是在划定的工夫革新网页向服务器呈报你是不是在线
为了便于辨别,frame网页我们接纳了红色作为底色
<iframeborder=0name=new_datemarginwidth=0framespacing=0marginheight=0src="loginFrame.asp"
frameborder=0noResizewidth=100scrolling=noheight=30vspale="0"></iframe>
<%else%>
您没有上岸哈
<%endif%>
上面要做的是loginFrame.asp
<!--#includefile="loginCONN.ASP"-->
<%CONN_TOL8.Execute("UpdateonlyLoginSetOLtime="&NOW()&"whereOLname="&Session("lgName")&"")%>
<html><head><metahttp-equiv="refresh"content="<%=(maxTime-5)%>;url=""></head></html>
到此为止程序就完成了,这个程序的关头就是判断用户是不是在线
asp可以轻松地实现对页面内容的动态控制,根据不同的浏览者,显示不同的页面内容。而浏览者一点觉察不出来,就像为他专门制作的页面一样。使用各种各样的组件,asp可以完成无比强大的功能。 |
|