[心缘地方]同学录
首页 | 功能说明 | 站长通知 | 最近更新 | 编码查看转换 | 代码下载 | 常见问题及讨论 | 《深入解析ASP核心技术》 | 王小鸭自动发工资条VBA版
登录系统:用户名: 密码: 如果要讨论问题,请先注册。
发表人 主题:maxtime怎么设置为分钟?
王新安
身份:user
发帖:60
登陆次数:23
1F 发表于 2006/8/9 18:30:44
版主,我在网上看到一篇文章。题目是同一账号不能同时登陆的问题。不知道版主看过没有。
其他的都好说,就是怎么设置maxtime为分钟,没想到却犯难了。起先看到这里没在意,心说那还不简单。最后却不会设。晕~~
看看下面的代码


<!--#include file="loginCONN.asp" -->
<%
''删除maxTime时间内部活动的用户,maxTime 在loginCONN.asp文件里面已经定义好了
Conn_TOL8.Execute("Delete From onlyLogin where DATEDIFF(''s'',OLtime, now()) > "& maxTime & "")



王新安
身份:user
发帖:60
登陆次数:23
2F 发表于 2006/8/9 18:32:22
我想把它设为15分钟,我是这么设的,不知道行不行。

dim maxtime
maxtime=900

嘎嘎,是我
身份:admin
发帖:1438
登陆次数:3287
3F 发表于 2006/8/9 19:15:04
对,是秒数。

王新安
身份:user
发帖:60
登陆次数:23
4F 发表于 2006/8/10 9:21:09
晕了,我给它定义了时间之后,是不报错。可也不执行。
用户名和密码错误也不执行。
版主帮我看看
onlylogin提交表单的代码:


<HTML>
<HEAD>
<TITLE> 一个账号不能同时登陆 </TITLE>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">

</HEAD>

<BODY>
<form name="form1" method="post" action="loginpost.asp">
用户名:<input name="username" type="text" size="15" maxlength="5">
密码:<input name="userpass" type="password" size="15" maxlength="15">
<input name="submit" type="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&"")

CONN_TOL8.Open Conn_T

%>



loginpost.asp处理表单的代码


<!--#include file="loginCONN.asp" -->
<%
Dim maxtime
maxtime=900
''删除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 %>



王新安
身份:user
发帖:60
登陆次数:23
5F 发表于 2006/8/10 9:29:18
版主,你是不是给单引号又加了了单引号啊。
上面那些单引号又多了单引号。

嘎嘎,是我
身份:admin
发帖:1438
登陆次数:3287
6F 发表于 2006/8/11 5:36:05
if Request.Form("Submit")="Login" then
-->
if Request.Form("Submit")="login" then

试一下吧。

王新安
身份:user
发帖:60
登陆次数:23
7F 发表于 2006/8/14 8:17:38
呵呵~~行了。为什么会这样,vbs不是不区分大小写吗?
停电四天,真是受不了。去网吧上网吧,没得试。

嘎嘎,是我
身份:admin
发帖:1438
登陆次数:3287
8F 发表于 2006/8/14 8:48:55
变量名不区分大小写,这些判断相等的地方好像是区分的。

王新安
身份:user
发帖:60
登陆次数:23
9F 发表于 2006/8/14 9:07:43
呵呵~~以后要注意了。

 
标题:
消息图标:                                             
                                            
正文:



* UBB 代码开启

 
CopyRight © 心缘地方 2005-2999. All Rights Reserved