用PHP判断用户是否在线的方法

用PHP判断用户是否在线的方法
CREATE TABLE TB_User ( –用户表
N_UserId Number(5) NOT NULL, –用户ID
V_NickName VARCHAR2(10) NOT NULL, –昵 称
V_PWD VARCHAR2(10) NOT NULL, –密 码
V_TrueName VARCHAR2(20), –姓 名
Primary Key (N_UserId)
)

CREATE TABLE TB_OnlineUser ( –在线用户
N_OnlineUserId Number(5) NOT NULL, –在线用户ID
D_LoginTime Number (16), –登陆时间以秒计
N_OnlineID Number(5), –与onlineusercount相关联。
Primary Key (N_OnlineID)
)
/
CREATE TABLE TB_OnlineUserCount ( –在线用户统计表
N_OnlineID Number(5) NOT NULL, –系统ID号
N_OnlineUserId Number(5) NOT NULL, –在线用户ID
D_LoginDate Date , –登陆日期
D_LoginTime Number (16) , –登陆时间以秒计
D_OverDate Date , –结束日期
D_OverTime Number (16) , –结束时间
Primary Key (N_OnlineID)
)
/

/*—LoginselectNew.php—该程序是登陆检查程序—-*/



/*-------CheckSession-----检查刷新程序---*/

   
";
//判断在线否?
if ($CountUser==0){
    print "没有人在线!特殊处理!";
}else{
$stmtOnlineUser = OCIParse($conn,"select N_OnlineUserId,D_LoginTime,N_OnlineID from tb_onlineuser"); 
OCIExecute($stmtOnlineUser);
$arrTest = array();
while(OCIFetchInto($stmtOnlineUser,&$arrUser[])){
     $arrTest += $arrUser;
}
$j = sizeof($arrTest);
if($j>0){
     $i = sizeof($arrTest[0]);     
   }
}    
    for($b=0;$b<$j;$b++){   //因为存入二维数组中,所以双重循环。
     for($a=0;$a<1;$a++){ //内循环一次找到时间。
     //注意双循环中是为了取数组值
     // $arrTest[$b][0]   表示用户ID
     // $arrTest[$b][1]   表示登陆起的时间
     // $arrTest[$b][1]   关联系统ID
      if   (ceil(($NowTime-$arrTest[$b][1])/60)>300){ //如果当前时间与一条记录的旧时间相差大于30分钟。
          if ($objsNickName==""){   //如果此用户session不存在,表示已经退出。
          //删掉。
           $temGlid= $arrTest[$b][2];    //关联系统ID
           $temuserid= $arrTest[$b][0]; //用户ID
           $stmt = OCIParse($conn, "delete from tb_onlineuser where $intOnlineID='$temGlid' and N_ONLINEUSERID='$temuserid'");
           print   "delete from tb_onlineuser where $intOnlineID='$temGlid' and N_ONLINEUSERID='$temuserid'";
           OCIExecute($stmt);
           print "删除成功";
          //添加到统计表中
           $tmpTime=time(); //结束时间
           $DatLoginDate = date( "Y-m-d");//结束日期
           $DatLoginDate = "to_date('".$DatLoginDate."','YY/MM/DD')";
           $stmtUserCount = OCIParse($conn, "update tb_onlineusercount set D_OverDate=$DatLoginDate ,D_OverTime=$tmpTime where N_OnlineID='$temGlid'");//条件是相关联的系统ID 
           OCIExecute($stmtUserCount);
           print "添加成功到统计表中。";
          }else{
           $tmpTime=time(); //取得临时用户时间
           $temuserid= $arrTest[$b][0];
           $stmt = OCIParse($conn, "update tb_onlineuser set d_logintime=$tmpTime where N_ONLINEUSERID='$temuserid'");
           OCIExecute($stmt);
           print "更新成功";
           print $tmpTime;
         }
         }else{
          print session_id();
          print "系统时间:".$NowTime."
"; print "数据库中旧时间:".$arrTest[$b][1]."
"; print "用户ID:".$arrTest[$b][0]."
";数据载入中 print "相差时间:".ceil(($NowTime-$arrTest[$b][1])/60)."
"; } } } /*如果要欢察统计表与在线表用户时间(当用户未离线时) select a.D_Logintime,b.D_logintime from tb_onlineuser a,tb_onlineusercount b where a.N_OnlineID=b.N_ONLINEID; 相差 如果要统计出指定用户在线时间(当用户离线时) select D_logintime,D_OverTime from tb_onlineusercount where N_OnlineUserId='$USERID'; 相差 */ ?>

相关文章

发表评论

返回顶部