判断用户是否在线的代码

 更新时间:2011年03月05日 12:16:05   作者:  
判断用户是否在线的代码,需要的朋友可以参考下。
考虑两种情况:
(1)用户关闭浏览器或重定向到其他网页
复制代码 代码如下:

<script type=text/javascript>
function exit_init() {
if(xmlhttp.readyState==4){
if(xmlhttp.status==200){ //
}
else{
alert("there was a problem accessing the server:"+xmlhttp.status);
}
}
}
//定义windows 的onbeforeunload 事件,当用户非正常退出即浏览器非正常关闭时,对用户登录状态进行处理
window.onbeforeunload=function () {
//if(event.clientY<0||event.altKey) {
exit_request = false;
//创建请求对象
if (window.XMLHttpRequest) {
exit_request = new XMLHttpRequest();
if (exit_request.overrideMimeType){
exit_request.overrideMimeType('text/xml');
}
} else if (window.ActiveXObject) {
try{
exit_request = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
exit_request = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e) {
}
}
}
if (!exit_request) {
alert("Your brower is not compatible the current opration.Please use the IE 5.0! ");
return false;
}
var url='null.php?userid='+document.getElementById("userid").value;
//定义页面调用的方法exit_init,不是exit_init();没有();
exit_request.onreadystatechange = exit_init;
exit_request.open('GET', url, true);
//禁止IE 缓存
exit_request.setRequestHeader("If-Modified-Since","0");
//发送数据
exit_request.send(null);
}
//}
</script>

说明:null.php用来将用户状态设为下线
(2)用户长时间不再浏览本网站
思路:创建表active_stat,属性有userid,lasttime,nowtime。用户每打开一次本网站,更改lasttime为当前时间now(),每隔1分钟更改nowtime为当前时间,判断nowtime-lasttime是否大于20分钟,若大于,则修改用户状态为下线
复制代码 代码如下:

<script language=javascript>
function test(userid){
setInterval("offline('"+userid+"')", 60000 ); //每隔1分钟执行一次
}
function offline(userid){
var xmlhttp=false;
try{
xmlhttp=new activeXObject('Msxml2.XMLHTTP');
}catch(e){
try{
xmlhttp=new ActiveXObject('Microsoft.XMLHTTP');
}catch(e){
try{
xmlhttp=new XMLHttpRequest();
}catch(e){}
}
}
if(xmlhttp.readyState==4||xmlhttp.readyState==0)
{
xmlhttp.open('get','../user/include/offline.php?userid='+userid,false);
xmlhttp.onreadystatechange=function(){
if(xmlhttp.readyState==4){
if(xmlhttp.status==200){
//
}
else{ alert("there was a problem accessing the server:"+xmlhttp.status);}
}
}
xmlhttp.send(null);
}
}
</script>
<BODY onLoad="test('<? echo $userid;?>');">

offline.php
复制代码 代码如下:

<?php
//连接数据库
$userid=$_GET["userid"];
pg_exec("update active_stat set nowtime=now() where userid='".$userid."';");
$result=pg_exec($dbconn,"select (nowtime-lasttime) as activetime from active_stat where userid='".$userid."'");
$str=pg_result($result,0,"activetime");
if(strlen($str)>16){
$array=explode(" ",$str);
$t=explode(":",$array[1]);
$t[0]=$t[0]+$array[0]*24;
$s=explode(".",$t[2]);
$t[2]=$s[0];
$y=((int)$t[0])*3600+((int)$t[1])*60+((int)$t[2]);
}
else{
$total_time=explode(".",$str);
$x=explode(":",$total_time[0]);
$y=((int)$x[0])*3600+((int)$x[1])*60+((int)$x[2]);
}
if($y>=1200){
pg_exec("update users set status='f' where userid='".$userid."';");
}
?>

相关文章

  • easyui window refresh 刷新两次的解决方法(推荐)

    easyui window refresh 刷新两次的解决方法(推荐)

    下面小编就为大家带来一篇easyui window refresh 刷新两次的解决方法(推荐)。小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-05-05
  • JS文件中加载jquery.js的实例代码

    JS文件中加载jquery.js的实例代码

    这篇文章主要介绍了JS文件中加载jquery.js的方法,JS文件添加其他JS的实例代码,感兴趣的小伙伴们可以参考一下,具体如下
    2018-05-05
  • 浅谈JS之tagNaem和nodeName

    浅谈JS之tagNaem和nodeName

    下面小编就为大家带来一篇浅谈JS之tagNaem和nodeName。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-09-09
  • google广告之另类js调用实现代码

    google广告之另类js调用实现代码

    这篇文章主要介绍了google广告之另类js调用实现代码,需要的朋友可以参考下
    2020-08-08
  • JS操作Cookies的小例子

    JS操作Cookies的小例子

    这篇文章介绍了JS操作Cookies的小例子,有需要的朋友可以参考一下
    2013-10-10
  • js 操作css实现代码

    js 操作css实现代码

    虽说jquery支持css选择器,可以把一些css规则放在js里,js无论如何是比css灵活的。但是js修改的是dom的htmlelement的stlye,是一个操作而非规则。
    2009-06-06
  • javascript轻量级模板引擎juicer使用指南

    javascript轻量级模板引擎juicer使用指南

    Juicer 是一个高效、轻量的前端 (Javascript) 模板引擎,使用 Juicer 可以是你的代码实现数据和视图模型的分离(MVC)。
    2014-06-06
  • JavaScript 未结束的字符串常量常见解决方法

    JavaScript 未结束的字符串常量常见解决方法

    做JavaScript的时候,发现老是出现错误:“未结束的字符串常量”. 自己找了下应该是传参数的时候,有特殊字符引起的.网上也找了下,也有好多出现这种情况.做下总结,以方便以后查阅.
    2010-01-01
  • 微信小程序实现横向滚动导航栏效果

    微信小程序实现横向滚动导航栏效果

    这篇文章主要介绍了微信小程序实现横向滚动导航栏效果,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-12-12
  • 详解JS内存空间

    详解JS内存空间

    因为JavaScript具有自动垃圾回收机制,所以对于前端开发来说,内存空间并不是一个经常被提及的概念。特别是很多不是计算机专业的朋友在进入到前端之后,会对内存空间的认知比较模糊,甚至有些人干脆就是一无所知。为了解决大家的疑惑,本文将详细介绍JS内存空间
    2021-06-06

最新评论