日期:2011-10-20  浏览次数:20822 次

前提:用asp实现这种功能显然有些牵强,因为ASP一般靠刷新网页更改最后活动时间来获取用户是否在线,本教程并不完美,只是提供一个思路!

实现这个功能可有两种方式:

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文件。

完成后在新建一个loginCONN.asp文件复制下面的代码保存用于连接数据库

下面做一个loginPost.asp文件也存在这个目录下,这是关键,仔细看下面的代码:

登陆成功后叶面会跳转到loginOK.asp

下面要做的是loginFrame.asp

到此为止程序就完成了,这个程序的关键就是判定用户是否在线,本例是用FRAME把定时刷新确定用户在线的关键性叶面嵌套在主程序的叶面里,实际的操作中可以把那个iframe的宽和高改为0让一般用户看不到,或者让主程序的网页底色和那个嵌套进来的定时刷新的网页一样就ok了。
至于有人说用session和cookies之类的东西也能判定,这显然是不可能的,因为他们生成的对象都是对自己起作用的,其数据内容根本无法和其他用户共用。appliaction应该是实现这一目的的另一种方法,但是如果同时有很多用户登陆要为每个用户生成至少一个到三个appliaction对象是十分不划算的,服务器会被拖垮~