注射乙肝疫苗:asp中统计用户在线人数的时间问题

来源:百度文库 编辑:杭州交通信息网 时间:2024/05/06 16:39:08
在编写聊天室时遇到以下情况:
用户登陆之后系统设定为:session("startime")=now()
当用户点击退出之后系统操作为:otime=datediff("n",session("startime"),now())
并将otime写入到数据库,结果为成功!
遇到的问题是:
如本应是2006年6月24日23点20分55秒,但是当用户将其(分钟)改为25分时,则写入到数据库中的变量就多加了5分钟.
也就是原来写入到数据库中的是15分钟,但是用户改完之后写进去的就是20分钟了.
我想请教各位大侠是否遇到过这类的问题.
能有什么办法避免或解决这种问题呢?
非常希望能给予解答!感激不尽!

简单的解决方法:在你的聊天室界面里加一个隐藏的iframe,里面放一个Refresh.asp,每1分钟(嫌太快就5分钟)刷新一次,每刷新一次给数据库里的用户在线时间加1分钟,为防止别有用心的人恶意刷新,每刷新一次让Session("NowTime")=Now(),然后在写数据库前将Session("NowTime")和Now()做比较,如果相差大于等于1分钟才进行写操作。这样他改一次系统时间再刷新页面,在线时间才加1分钟,而他操作的时间都快1分钟了。

如果你不怕给服务器增加负担(其实没啥负担),也不怕麻烦的话(其实不麻烦),就每次刷新的时候从数据库里读getdate()出来,这个是服务器端时间,用它代替Now()的话,他就算改时间也没用了。