判斷用戶是否在線的代碼
(1)用戶關(guān)閉瀏覽器或重定向到其他網(wǎng)頁
<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 事件,當(dāng)用戶非正常退出即瀏覽器非正常關(guān)閉時(shí),對(duì)用戶登錄狀態(tài)進(jìn)行處理
window.onbeforeunload=function () {
//if(event.clientY<0||event.altKey) {
exit_request = false;
//創(chuàng)建請(qǐng)求對(duì)象
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;
//定義頁面調(diào)用的方法exit_init,不是exit_init();沒有();
exit_request.onreadystatechange = exit_init;
exit_request.open('GET', url, true);
//禁止IE 緩存
exit_request.setRequestHeader("If-Modified-Since","0");
//發(fā)送數(shù)據(jù)
exit_request.send(null);
}
//}
</script>
說明:null.php用來將用戶狀態(tài)設(shè)為下線
(2)用戶長(zhǎng)時(shí)間不再瀏覽本網(wǎng)站
思路:創(chuàng)建表active_stat,屬性有userid,lasttime,nowtime。用戶每打開一次本網(wǎng)站,更改lasttime為當(dāng)前時(shí)間now(),每隔1分鐘更改nowtime為當(dāng)前時(shí)間,判斷nowtime-lasttime是否大于20分鐘,若大于,則修改用戶狀態(tài)為下線
<script language=javascript>
function test(userid){
setInterval("offline('"+userid+"')", 60000 ); //每隔1分鐘執(zhí)行一次
}
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
//連接數(shù)據(jù)庫(kù)
$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."';");
}
?>
相關(guān)文章
javascript 數(shù)組(list)添加/刪除的實(shí)現(xiàn)
這篇文章主要介紹了javascript 數(shù)組(list)添加/刪除,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-12-12微信小程序?qū)崿F(xiàn)輪播圖標(biāo)題跑馬燈
這篇文章主要為大家詳細(xì)介紹了微信小程序?qū)崿F(xiàn)輪播圖標(biāo)題跑馬燈,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-06-06layui的表單提交以及驗(yàn)證和修改彈框的實(shí)例
今天小編就為大家分享一篇layui的表單提交以及驗(yàn)證和修改彈框的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-09-09JavaScript自定義函數(shù)實(shí)現(xiàn)查找兩個(gè)字符串最長(zhǎng)公共子串的方法
這篇文章主要介紹了JavaScript自定義函數(shù)實(shí)現(xiàn)查找兩個(gè)字符串最長(zhǎng)公共子串的方法,涉及javascript針對(duì)字符串的遍歷、比較、查找等相關(guān)操作技巧,需要的朋友可以參考下2016-11-11uni-app使用Vite.config.js配置文件的超詳細(xì)教程
這篇文章主要給大家介紹了關(guān)于uni-app使用Vite.config.js配置文件的超詳細(xì)教程,在uniapp開發(fā)中,vue.config.js是配置webpack的關(guān)鍵文件之一,也可以說是uniapp項(xiàng)目自定義配置的中心,需要的朋友可以參考下2023-12-12JavaScript實(shí)現(xiàn)拖拽元素對(duì)齊到網(wǎng)格(每次移動(dòng)固定距離)
最近在做一個(gè)拖拽元素的附加功能,就是對(duì)齊到網(wǎng)格,實(shí)際上就是確定好元素的初始位置,然后拖拽元素時(shí),每次移動(dòng)固定的距離。讓元素都可以在網(wǎng)格內(nèi)對(duì)齊2016-11-11JavaScript中正則表達(dá)式使數(shù)字、中文或指定字符高亮顯示
這篇文章主要介紹了JavaScript中正則表達(dá)式使數(shù)字、中文或指定字符高亮顯示,需要的朋友可以參考下2017-10-10Jjcarousellite 實(shí)現(xiàn)圖片列表滾動(dòng)的簡(jiǎn)單實(shí)例
這篇文章主要介紹了Jjcarousellite 實(shí)現(xiàn)圖片列表滾動(dòng)的簡(jiǎn)單實(shí)例,有需要的朋友可以參考一下2013-11-11