社区
其他
帖子详情
谁能讲一下在线名单的原理?》??
lio_sy
2003-09-14 02:21:42
谢谢啊
...全文
30
1
打赏
收藏
谁能讲一下在线名单的原理?》??
谢谢啊
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
1 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
lions911
2003-09-14
打赏
举报
回复
很多网友都问如何制作社区的在线人员显示问题,这也是个老大难的问题。由于笔者已经学习和实践了这些方面的编程已经有很长一段时间了。不说是有技术,也算是有些经验了,在这些问题解决方面我也曾遇到比较多的问题,后来总是解决了。
这次和大家讲的不关是一个程序的代码实现,而更重要的就是一个原理和思想问题,因为如何大家都知道这个该如何去做的话,就不存在技术上的难题了,而只是一个语法上的不熟罢了。
其实判断用户是否登录很简单,只要在登录的程序加上 "把用户设为在线" 就行了,这可以用SQL的update来做也可以用其他的如对文本文件的追加来做。如何登录时是设置的可以COOIKE登录的话,你只要在浏览页面或是发表贴子等的页面,进行更新也可以。
其实网友认为难的就在于如何知道用户已经离开社区了。下面有几个初学网友会犯的错误。
错误方法一: 当然有的网友会做在社区里做个 "退出社区" 可有的用户比较忙或是手比较快,就会直接的关闭浏览器了。那么在程序看来此用户根本就没有退出社区。
错误方法二: 为了这样也有的网友以关闭浏览器为标准,例如每当用户直接关闭浏览页面时,用JavaScript执行一个unload事件,跳出一个窗口,来执行相就在的更新,这也许是解决直接关闭的问题。可是网友没有考虑到如果因为贴子或文章太长,用户想断了线后,再好好的看看,那么他正好是直接断线后,看完所有贴子或文章再关闭浏览器的呢。此时跳出窗口页面的程序就等于没有执行。
错误方法三:使用session为例,一般的服务器中都有Session的失效时间,如IIS中为20分钟,有的网友以Session为标准,来判断,这显然也是行不通的,结果会和错误方法二一样。
那么如果才是正确的方法呢。到现在为此还没有一种方便的和精确的方法,除非你用Job事务来做,当那几乎是不可能的,因为免费的,即使是收费的主页空间也不会让你这么做的。所以只能能过普通的命令来实现了。
不过它的局限性就在于不能精确,但是我们可以让他更加的接近于精确。
下面我们会以IIS环境下的SQL SERVER服务器为例子。其他的如PHP+MYSQL,JSP+MS SQL SERVER等举一反三,几乎语句都不用怎么变。
例子中采用程序片段,例如用户在表users中,除了基本要有的用户名字段(name)等,要有online字段,可以用bit类型就可以了。还要有一个登录时间的字段logintime,和最后操作时间的字段logouttime,都为datetime类型。详细的作用我们会在后面谈到。
首先在用户登录进入时,要生成一个Session("name")字段的值,或是cookies("club")("name")的值,以便于在进行操作时,让SQL在社区中任意页面都知道是哪个用户的记录。接着更新用户的下online字段和logintime字段,语句如下:
conn.execute("Update users set online=1,logintime='"&now&"' where name='"&session("name")&"'")
这条语句的作用在于当用户登录时,就把用户在线设为真,再把当前操作时间设为现在。其次在用户进行贴子或文章浏览时,也要用此语句,因为这样才可能更加的准确些。
在这些语句的后面再加上一句。
conn.execute("Update users set online=0 where diffdate(""n"",logintime,'"&now()&"')>10")
这条语句的作用表示把用户最后操作时间和当前时间相比较,如果大于10分钟的话,就会把这些用户都设为离线。
好了,其实关键的也就是这两条语句而以,是不是很简单?说了这么多,其实想让大家了解的就是实现的原理,而不是什么代码。相信大家现在也可以很简单的做出关于PHP+MYSQL和JSP+数据库的在线人员显示的程序来了。
最后可以用"select name from users where online=1"来调用在线的用户了,然后显示出来当然也没问题了。呵。。。
也许有的朋友会有更好的方法,欢迎发表出来和大家共同进步吧。如果有什么问题的话,也可以来我的社区里讨论讨论吧。http://luyu.net
知道DDoS攻击吗?大概
讲
讲
它的
原理
讲
讲
它的
原理
。大概说的比较明白不到1/3。 其实,像全球互联网各大公司,均遭受过大量的DDoS。 2018年,GitHub 在一瞬间遭到高达 1.35Tbps 的带宽攻击。这次 DDoS 攻击几乎可以堪称是互联网有史以来规模最大、威力...
面试官问:知道DDoS攻击吗?大概
讲
讲
它的
原理
目录 那 DDoS 攻击究竟是什么? 下面给一个更加形象点的例子,解释下DDoS攻击。 ...
讲
讲
它的
原理
。大概说的比较明白不到1/3。 其实,像全球互联网各大公司,均遭受过大量的DDoS。 2018年,...
物联网卡联网
原理
是什么?为什么有时无法使用?
随着物联网卡技术的快速发展,物联网也成为了我们生活中的一部分...物联卡联网的
原理
是怎么样?为什么有时候物联卡不能用? 随着物联网技术的持续火爆,作为物联网技术中的关键一部分物联网卡也受到了更多的关注...
手机没网了,却还能支付,这是什么
原理
?
这个流程商家端后台程序必须联网
在线
,但是对于我们客户端来
讲
可以
在线
,也可以离线。 如果我们客户端
在线
,那就可以通过服务端向客户端发送付款码,这种方式更加安全,灵活,但是对于弱网环境下,体验就很差。 ...
小视频去水印
原理
及其代码?
我这里为了省事,使用了云函数基于nodejs作为后端 并且调用了第三方api。虽然只是随手写写的,下个月就到期了。只是
讲
一下
大概
原理
。
其他
10,607
社区成员
29,048
社区内容
发帖
与我相关
我的任务
其他
Web 开发 其他
复制链接
扫一扫
分享
社区描述
Web 开发 其他
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章