为了尽快获得看雪论坛的正式用户,菜鸟只能采用挂机这种低水平的方法。不过在挂机的过程中解除了一个疑惑,跟大家分享讨论一下。 本来是想等到转正那天再发出来,但是今天在论坛上看到一个帖子 http://bbs.pediy.com/showthread.php?t=151656 求助说,挂机没有增加在线时间。。 于是就赶快写出来帮忙解决他的问题一下。。。。
首先需要明确的是,网页浏览是http传输数据的,而且浏览器请求回来所需要的网页后就会和服务器断开,这样服务器是不知道你是否还在线。一种解决方案是使用session来解决这个问题,但是因为session是有生存时间的,于是要想挂机,必须在一定时间内刷新网页,才能更新session的生存期。
菜鸟有电脑,而且愿意一直开着(谁让咱那么想得到看雪的正式用户呢
),但是不愿意的是不想一直点刷新按钮,这是让人很耐烦的。。。。。
解决方法是使用脚本。。windows下推荐使用autoit自动化脚本,支持编程而且特别强大!!
下面就是我用来刷新的脚本 refresh.au3 是每隔一分钟自动刷新一下网页。
;refresh web page every 60 seconds
WinWaitActive("看雪安全论坛 - www.pediy.com - Windows Internet Explorer")
While(True)
Send("{F5}")
sleep(60*1000)
WEnd
简单吧~~~~ 具体使用方法,可以从
官网下载后看help帮助文件,比较详细,这里就不浪费空间了。
解决了刷新问题,下面我就就来谈谈有点深入的,话说服务器是怎么计算用户的在线时间呢??
根据经验,我觉得会有两种方案,
一、不知道大家有没有这种经历,高中时不能经常上网,但是又特别想刷qq的等级,一种广为传送的方法是,每隔三十分钟手机登陆一次qq,登上去后马上退,这样反复登陆4次就能刷2个小时的在线时间,按照腾讯的要求,2个小时就计算为了1天。。 看到这里大家肯定都明白了腾讯很可能是这样计算在线时间的------
if(userEnterPwd.equals(databasePwd))
{
//首先判断session里键"userid"有没有值,如果有说过该用户一直在线
if(session.getAttribute("userid") != NULL)
{
return;
}
//登陆成功
session.setAttribute("userid","123456"); //123456的qq在线
onlineTime += 30*60; //在线时间加上30分钟
}
(上面是依据session判断的,如果想杜绝多个浏览器同时刷新时间,就需要将userid这个键持久化,每次都取出来看看是否有值)。。。
可是为什么是30分钟呢,原因很可能是因为session的默认有效时间就是30分钟,腾讯的开发者偷懒了。。。。
二、还有一种在线时间的计算方法,这种方法是大部分论坛所采用的。用cookie记录上次访问的时间,每次用户提交一个新的请求时都会和上一次访问时间对照,如果它们之间的差小于过期时间(定义的一个时间,如果大于这个时间说明用户刚才是不在线的)就累加到在线时间里。
以上是个人的看法,如果有不对的地方欢迎大家来批评指正。。。
[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法