사용자의 온라인 코드 판단

4263 단어
두 가지 시나리오를 고려하십시오.
(1) 사용자가 브라우저를 닫거나 다른 페이지로 리디렉션
 
  
<br>function exit_init() { <br>if(xmlhttp.readyState==4){ <br>if(xmlhttp.status==200){ // <br>} <br>else{ <br>alert("there was a problem accessing the server:"+xmlhttp.status); <br>} <br>} <br>} <br>// windows onbeforeunload , , <br>window.onbeforeunload=function () { <br>//if(event.clientY<0||event.altKey) { <br>exit_request = false; <br>// <br>if (window.XMLHttpRequest) { <br>exit_request = new XMLHttpRequest(); <br>if (exit_request.overrideMimeType){ <br>exit_request.overrideMimeType('text/xml'); <br>} <br>} else if (window.ActiveXObject) { <br>try{ <br>exit_request = new ActiveXObject("Msxml2.XMLHTTP"); <br>} catch (e) { <br>try { <br>exit_request = new ActiveXObject("Microsoft.XMLHTTP"); <br>} catch (e) { <br>} <br>} <br>} <br>if (!exit_request) { <br>alert("Your brower is not compatible the current opration.Please use the IE 5.0! "); <br>return false; <br>} <br>var url='null.php?userid='+document.getElementById("userid").value; <br>// exit_init, exit_init(); (); <br>exit_request.onreadystatechange = exit_init; <br>exit_request.open('GET', url, true); <br>// IE <br>exit_request.setRequestHeader("If-Modified-Since","0"); <br>// <br>exit_request.send(null); <br>} <br>//} <br>

설명:null.php는 사용자 상태를 하선으로 설정하는 데 사용됩니다
(2) 사용자가 본 사이트를 장시간 방문하지 않음
생각: 테이블 만들기 activestat, 속성은userid,lasttime,nowtime가 있습니다.사용자가 본 사이트를 한 번 열 때마다lasttime를 현재 시간now()로 변경하고 1분마다nowtime를 현재 시간으로 변경하여nowtime-lasttime가 20분보다 큰지 판단하고 크면 사용자 상태를 하선으로 수정합니다
 
  
<br>function test(userid){ <br>setInterval("offline('"+userid+"')", 60000 ); // 1 <br>} <br>function offline(userid){ <br>var xmlhttp=false; <br>try{ <br>xmlhttp=new activeXObject('Msxml2.XMLHTTP'); <br>}catch(e){ <br>try{ <br>xmlhttp=new ActiveXObject('Microsoft.XMLHTTP'); <br>}catch(e){ <br>try{ <br>xmlhttp=new XMLHttpRequest(); <br>}catch(e){} <br>} <br>} <br>if(xmlhttp.readyState==4||xmlhttp.readyState==0) <br>{ <br>xmlhttp.open('get','../user/include/offline.php?userid='+userid,false); <br>xmlhttp.onreadystatechange=function(){ <br>if(xmlhttp.readyState==4){ <br>if(xmlhttp.status==200){ <br>// <br>} <br>else{ alert("there was a problem accessing the server:"+xmlhttp.status);} <br>} <br>} <br>xmlhttp.send(null); <br>} <br>} <br>


offline.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."';");
}
?>

좋은 웹페이지 즐겨찾기