ASP 防止同时登陆的问题
实现这个功能可有两种方式: 1。application 用 application 对象:如果做的是大型社区,可能要为每个登陆 id 生成一个 appliaction,这样做虽然程序上
设计会简单些但登陆用户过多及其耗费服务 器资源,这里决不提倡,因为 appliaction 对象在用户登陆时生成很容易, 但是要做到真正的随着用户退出系统完全释放,到目前还没看到更好的方法~ 以下为引用的内容: <% .....取用户名 username..... if Application(username)<>"" then response.write "该用户已经登录" response.end end if Application(username)=username ''存入该用户的用户名 %> 在 global 文件中加上 session onend 事件,下线时 Application("isuserlogin")=false 此外还要检测是否吊线,有专门的办法,是 server 对象里的某项 (参: community.csdn.net/Expert/FAQ/FAQ_Index.asp?id=815) 2。数据库+asp 做起来可能会复杂些,但是适合有大量登陆用户的
系统。 首先为用户建立数据库-用 access 新建一个 onlyTOL8.mdb 数据表 1: users 存放用户
注册资料 下设数据表:uID(自动编号) userName(字符型) userPass(字符型) 数据表 2: onlyLogin 存放用户临时登陆信息 下设数据表: OLname(字符型) OLtime(日期型) OLip(字符型) 数据库建好后直接向 users 表中手动添加数据 userName 表添加 TOL8,userPass 表里添加 111, 下面来做用户登陆界面,复制下面代码存成 onlyLogin.asp 文件。 以下为引用的内容:
完成后在新建一个 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 文件也存在这个目录下,这是关键,仔细看下面的代码: 以下为引用的内容: <% ''删除 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("
用户名或密码错误") 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("R