如何使得一个会员在线的只能一个人?

last_prodigal 2003-07-21 04:58:26
一个会员不能同时有两个人登陆,同一时间内只能一个人在线,请问各位大哥应该如何实现比较好?谢谢了
...全文
112 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
long515 2003-07-31
  • 打赏
  • 举报
回复
怎么这么快就结了呢,我还在问一个问题,,就是如果出现这种“一个会员同时有两个人登陆”我要求把这个会员的账号记录下来,又当如何?
earthpea 2003-07-29
  • 打赏
  • 举报
回复
做一个online表,将登录的用户登记到里面,字段加一个最后访问时间,如果正常注销,就删除表中的记录,如果是直接关闭IE的话,就在下一个人登录的时候来查,如:

有人登录,先检查online表中有没有超时用户:
sql="Delete FROM online WHERE DATEDIFF('s', lastime, now()) > 3600
lastime为最后访问时间,now()为现在的时间,如果一小时没有访问(3600秒),就认为已经掉线,将它删除

然后再sql = "select count(*) from online where username = '" & username & "'"
就行了嘛
anita2li 2003-07-29
  • 打赏
  • 举报
回复
up
zorou_fatal 2003-07-29
  • 打赏
  • 举报
回复
cookie不够安全。
zorou_fatal 2003-07-29
  • 打赏
  • 举报
回复
哦,你还没弄明白。我再说一点
你可以在数据库里填加一个字段,当该帐户登录时,将该字段置一个值。
然后其他人如果也用的话,就先检测该字段来判断帐户是否在使用中。

如果想要注销该用户,可以把注销的动作写到登录那个部分中,也就是其他用户的动作引发超时用户的注销动作。注销动作就很简单了,一个字段保存该用户最后在站点上的时间,用一个datediff判断一下是否大于你设置的超时的那个常量来判断是否要注销该用户。sql语句也很好写。
动网就是这么做的。
long515 2003-07-28
  • 打赏
  • 举报
回复
不太明白。哪位大虾再讲讲。。
sgmao 2003-07-23
  • 打赏
  • 举报
回复
在登陆表里面加一个字段,表示用户是否在线?


如果在线则赋值1,不在线则赋值0

每次登陆时检测这个字段的值就可以啦
redkid 2003-07-22
  • 打赏
  • 举报
回复
最完美的解决方案
登录时记录以下资料
用户名 最后刷新页面时间 IP地址 识别字符串
用户登录时生成一个识别字符串保留在cookies里,然后也存到服务器上。
用户登录时检测本机是否有cookies存在,检查识别字符串与用户名是否和肥务器端一致,一致,表示用户为掉线后重上的。
如果服务器端没有此用户记录,表示用户可以登录。
如果服务器端有此用户,但cookies不存在或存在但识别字符串不一致,表示用户想重复登录。
当然,每次检测时需要删除最后刷新页面时间在10分钟以前的。这个时间可以自己定义。
所有的页面都要检测用户是否登录的信息,并更新最新刷新页面时间。最好是用页内帧包含一个专门进行此功能的自刷新页面。
tigerwen01 2003-07-22
  • 打赏
  • 举报
回复
这个问题难度很大。
last_prodigal 2003-07-22
  • 打赏
  • 举报
回复
各位大哥能不能说的具体点?
laoshuan123 2003-07-22
  • 打赏
  • 举报
回复
说明:下面的例子中,session("zt")='1'表示在线状态,=‘5’表示隐身状态
if (session("zt")="1" or session("zt")="5") and request.cookies("ip")=request.servervariables("remote_addr") then
session("key")="laoshuan so great"
response.redirect("show.asp")
else%>
<script language="javascript">
alert("对不起,你输入的账户正在被使用中,如果你是这个账户的真正主人,请在下次登陆时及时的更改你的密码,因为你的密码极有可能被盗窃了!");
location='index.asp' </script>
<%
end if



身分验证之后,记得要有这样的句子:
response.Cookies("ip")=request.servervariables("remote_addr")



(这条语句克服了两个人同时用一个账号上网了。以前哥们儿老是说在线状态突然变成隐身(其实是下线)。我认为:肯定不会是程序的稳定性问题。想来想去 终于明白了,肯定是他的密码泄漏,有别人在他上网的同时也是用他的账户登陆系统,以前的系统是不能拒绝这种登陆的。哈哈!没想到我这么聪明,根据ip的不同就可以判断出这个同时登陆人不是第一个登陆人。这样第二个人登陆就上不去了,会自动被引导到index.asp页面。同时,第一个用户即使在没有注销登陆的情况下还能再次登陆,而不受到任何限制。只是不能在登陆的时候改变在线的属性。不过还是有个缺陷,假如用户登陆了我的网站后,突然掉线了,那么即使他马上又重新拨号上来,也不能立即进入他的页面,必须等他上次的登陆超时候才能进入。呵呵!北京电信的人应该给我广告费,因为我要推广上网非常稳定的adsl了!)
onlymilanxp 2003-07-21
  • 打赏
  • 举报
回复
zorou_fatal,如果用户关了浏览器(不是正常退出),怎么知道什么时候修改这个值。
所以登陆时将用户名赋到session中,登陆时如果session用户名不为空,就说明已经登陆,不许再次登陆。
zorou_fatal 2003-07-21
  • 打赏
  • 举报
回复
你可以在数据库里填加一个字段,当该帐户登录时,将该字段置一个值。
然后其他人如果也用的话,就先检测该字段来判断帐户是否在使用中。
pp4u 2003-07-21
  • 打赏
  • 举报
回复
登陆时检测在线名单

28,391

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧