判断用户是否在线的代码
代码 用户 判断 是否 在线
2023-06-13 09:14:27 时间
考虑两种情况:
(1)用户关闭浏览器或重定向到其他网页
复制代码代码如下:
(1)用户关闭浏览器或重定向到其他网页
<scripttype=text/javascript>
functionexit_init(){
if(xmlhttp.readyState==4){
if(xmlhttp.status==200){//
}
else{
alert("therewasaproblemaccessingtheserver:"+xmlhttp.status);
}
}
}
//定义windows的onbeforeunload事件,当用户非正常退出即浏览器非正常关闭时,对用户登录状态进行处理
window.onbeforeunload=function(){
//if(event.clientY<0||event.altKey){
exit_request=false;
//创建请求对象
if(window.XMLHttpRequest){
exit_request=newXMLHttpRequest();
if(exit_request.overrideMimeType){
exit_request.overrideMimeType("text/xml");
}
}elseif(window.ActiveXObject){
try{
exit_request=newActiveXObject("Msxml2.XMLHTTP");
}catch(e){
try{
exit_request=newActiveXObject("Microsoft.XMLHTTP");
}catch(e){
}
}
}
if(!exit_request){
alert("Yourbrowerisnotcompatiblethecurrentopration.PleaseusetheIE5.0!");
returnfalse;
}
varurl="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分钟,若大于,则修改用户状态为下线
<scriptlanguage=javascript>
functiontest(userid){
setInterval("offline(""+userid+"")",60000);//每隔1分钟执行一次
}
functionoffline(userid){
varxmlhttp=false;
try{
xmlhttp=newactiveXObject("Msxml2.XMLHTTP");
}catch(e){
try{
xmlhttp=newActiveXObject("Microsoft.XMLHTTP");
}catch(e){
try{
xmlhttp=newXMLHttpRequest();
}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("therewasaproblemaccessingtheserver:"+xmlhttp.status);}
}
}
xmlhttp.send(null);
}
}
</script>
<BODYonLoad="test("<?echo$userid;?>");">
offline.php
<?php
//连接数据库
$userid=$_GET["userid"];
pg_exec("updateactive_statsetnowtime=now()whereuserid="".$userid."";");
$result=pg_exec($dbconn,"select(nowtime-lasttime)asactivetimefromactive_statwhereuserid="".$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("updateuserssetstatus="f"whereuserid="".$userid."";");
}
?>
相关文章
- 判断字符串是否正序倒序一致(判断回文字符串代码)
- 用概率推理解决强化学习- pyro colab代码
- 【视频】Python用LSTM长短期记忆神经网络对不稳定降雨量时间序列进行预测分析|数据分享|附代码数据
- PYTHON用户流失数据挖掘:建立逻辑回归、XGBOOST、随机森林、决策树、支持向量机、朴素贝叶斯和KMEANS聚类用户画像|附代码数据
- 【设计模式】享元模式 实现 ( 实现流程 | 抽象享元类 | 具体享元类 | 享元工厂 | 用户调用 | 代码模板 )
- 【Android 应用开发】Google 官方 EasyPermissions 权限申请库 ( 完整代码示例 | 申请权限 | 申请权限原理对话框 | 引导用户手动设置权限对话框 )
- 开源 Swallow 代码审计系统体验
- 根据IP地址获取用户的MAC地址Java代码详解编程语言
- 使用Jasypt来加密解密的Java示例代码详解编程语言
- Struts2_day04讲义_使用Struts2完成用户登录的权限拦截器的代码编写详解编程语言
- #新闻拍一拍# 泄露的 Windows XP 代码经用户编译为可运行的系统
- 添加超级用户的.asp代码[蓝屏的原创,凯文改进,Ms未公布的漏洞]
- 使用户点击后退按钮使效三行代码
- PHP如何编写易读的代码
- 使用ASP记录在线用户的数量的代码
- AJAX用户唯一性验证实现代码
- asp.netASPxTextBox等控件实现"回车模拟Tab"的常用代码整理
- php下使用curl模拟用户登陆的代码
- WordPress判断用户是否登录的代码
- PHP调用Webservice实例代码
- 用Javascript评估用户输入密码的强度实现代码
- asp.net+Ajax校验用户是否存在的实现代码
- PHP中使用crypt()实现用户身份验证的代码
- php删除文件夹及其文件夹下所有文件的函数代码
- JSP+ajax实现输入框自动补全功能实例代码
- VB.NET设置屏幕分辨率、颜色位数、刷新率实例代码
- JS防止用户多次提交的简单代码
- PHP开发微信支付的代码分享