老题新问:如何判断会员是否登陆???
最近在做一个会员系统,规定必须是会员才能进行一些相关的操作,这样势必面临一个严峻的问题:如何判断会员是否正常登陆???
我一直认为用session来标识存在相当大的隐患,以前在局域网做信息化系统,采用session来标识的时候出现过session的混乱的现象(而且用session还得客户端支持cookie):我正常登陆系统后,显示的却是其他用户名!后来我们就采用“用户名+IP+MAC”捆绑的方案来解决。
可是现在是在外网,好象顶多实现“会员+IP”捆绑,不知道ASP论坛里的高手们还能给点思路,先谢谢了!
------解决方案--------------------没做限定的情况,同一个用户名可以同时登录无数个——只要服务器能承受的起——这个大家都知道;
现在客户提出要求,要求一个用户名在同一时间可以限定登陆的个数……
下面开始添加这个功能:
----------------------------
先说说这个功能我的思路:
说明一点:现在是对单个的用户限定登录的个数,并不是限定最多多少个用户登录服务器,所以想用Session_OnEnd,Aplliction_onEnd的方法是行不通的,因为当发生了Session_OnEnd时用户的标识Session已经丢了,来不及把对应用户的登录信息做处理了……
其实基本的思路,网上早已经有了,我只是更细化,考虑的更周全一些……
新建一个表Login,记录用户的ID,和用户上线时间。做一个隐藏框架(高宽都是0),让它每隔一段时间向服务器提交一次数据,更新Login表中对应用户的“上线时间”。
这样用户登陆时,如果该用户名在Login表中无登录信息或登录信息不大于限定的最大登录数,说明用户可以登录,这时Login表里加一条记录表示这个用户名已经有一个用户登陆。如果这个用户登录时发现Login表里的该用户登录条数已经占满,再查看有没有“上线时间”过期的!如果“上线时间”有过期的,那此次登录就占用这条登录信息,并把上线时间刷新为当前时间。如果用户的登录条数已经占满且没有过期的用户那就返回登录失败。
------------------------原文
http://www.lastidea.net/BlogShow.asp?ID=212
希望对你有帮助
------解决方案--------------------如果你做的非常严格的话,可以尝试用md5加密的方法来验证用户是否登录。
但是你说的session混乱我不太理解,而且即使客户浏览器不支持cookies,也可以用session的。
------解决方案--------------------session怎么会混乱呢?
关于一定的时间登陆一定的次数可以家字段判断啊!!!!!
------解决方案--------------------我不知道你为什么会session混乱的,丢失倒是经常的事情;
我觉得在线的判断是最大的难点,你如果可以解决非正常的关机或者关闭浏览器能够准确的注销,那就可以完成在线的统计工作;
现在做的办法一般都是比较妥协的办法,通过一定时间的过期来保证用户关闭没有注销的情况;你要做到非常的准确,估计还是比较难的