文章作者 : linkfoxo [ webmaster@cfwindow.com ] Web URL : http://www.cfwindow.com
上载日期 : 2001-01-05
第三节: 捕捉目前用户在线信息: 基本概念.
引言:
你想知道谁登录到你的网站, 抑或是不同的用户在同一时刻登录会怎样呢?
当用户登陆时, 浏览器和服务器之间的交换只有几十毫秒.假如我们从客户访问 page A (R1)开始计
时, 当用户访问 page B (R2)停止, 这样我们可以说客户在网站上停留了这么多时间.
但是当用户关闭浏览器, 或者突然间关掉机器, 或者突然他的系统崩溃了. 怎样? 他不在访问R2
了, 我们的计时器还在工作,
我们就得不到用户的确切在线信息了.
这样一来我们也不能防止不同的用户用同样的用户名和密码在同一时间登陆. 因为我们得不到用户的
目前状态. 不知道他有没有下线, 或者LOGOUT.
不幸的是 Hotmail, Yahoo Mail, 也没有这样的安全保护措施.
现在有一种解决办法...
当我们开始下一步之前, 我们要求你必须熟悉structures和associative arrays这两个概念.
我们建议你仔细研究一下Studio里面的帮助信息.
假设我们知道你了解熟悉structures, 重要的是你要知道session variables和applications variables
都是structures.
你现在知道session variables确切的说是指一个用户 而且你也知道用户可以使用application variable.
所以,如果我们插入所有已
经登陆用户的session variables到一个application variable/structure里面,
我们很容易在这个structure中循环然后了解谁还在使用这个session variable.
至此我们可以检查一个正在登陆的用户, 他的ID是不是已经被使用了(在线);
对于没有使用Logout就离开应用程序的用户, 我们采取以下两个办法:
A - 跟踪用户的session超时状态: 当用户每次对程序做http request的时候,包含用户登陆信息的
application variable做及时更新.
这样一来, 我们可以跟踪
用户最后在系统请求的时间.这样当新用户在登陆的时候, 我们使用检查他上一次的请求时间,
然后算出到现在的时间差.如果这个时间差超出我们理论认为的超时设置, 我们就让他登陆,
如果不是, 则拒绝执行.
B - 另外, 我们可以使用jscript, 当用户离开时或者试图关闭浏览器时后,我们强制自动Logout出系统.
现在留给我们的情况就是用户系统掉电,或者系统崩溃, 幸运的是这种情况发生的几率很低.
别忘了, 我们可以减少用户session Timeout的规定时间. 以解决这种状况.
待续....
|