• <label id="pxtpz"><meter id="pxtpz"></meter></label>
      1. <span id="pxtpz"><optgroup id="pxtpz"></optgroup></span>

        當前位置:雨林木風下載站 > 技術開發教程 > 詳細頁面

        判斷在線用戶的辦法

        判斷在線用戶的辦法

        更新時間:2022-05-07 文章作者:未知 信息來源:網絡 閱讀次數:

        解決了昨天的問題:表結果變了一下,如下:
        CREATE TABLE TB_User ( --用戶表
        N_UserId Number(5)NOT NULL, --用戶ID
        V_NickNameVARCHAR2(10)NOT NULL, --昵 稱
        V_PWDVARCHAR2(10)NOT NULL,--密 碼
        V_TrueNameVARCHAR2(20), --姓 名
        Primary Key (N_UserId)
        )
        CREATE TABLE TB_OnlineUser ( --在線用戶
        N_OnlineUserId Number(5)NOT NULL, --在線用戶ID
         D_LoginTime Number (16), --登陸時間以秒計
         N_OnlineIDNumber(5), --與onlineusercount相關聯。
        Primary Key (N_OnlineID)
        )
        /
        CREATE TABLE TB_OnlineUserCount (--在線用戶統計表
        N_OnlineIDNumber(5)NOT NULL, --系統ID號
        N_OnlineUserId Number(5)NOT NULL, --在線用戶ID
        D_LoginDateDate ,--登陸日期
        D_LoginTime Number (16),--登陸時間以秒計
        D_OverDateDate,--結束日期
        D_OverTimeNumber (16) ,--結束時間
         Primary Key (N_OnlineID)
        )
        /

        /*---LoginselectNew.php---該程序是登陸檢查程序----*/
        <?
        session_start();
        /*思路:首先用戶登陸,判斷是否有該用戶,判斷是否密碼通過,否則返回參數進行特殊處理。(登陸不成功)
        登陸成功后,如果該用戶不在線(一般不在線,特殊情況如果他用另一臺機器打開瀏覽器重新再登陸,那么他有可能在線),
        先進行session變量注冊,取得相應條件向1.統計表與2.在線表中插數據。進入到登陸頁。
        如果用戶在線:先取得在線用戶的系統ID,因為在備份該用戶離開時有用。接著刪除該在線用戶.接著進行該用戶離開時間的備份.
        */
        session_register("objsNickName");
        require('oracle8conn.php');
        $name=trim($name);
        $pwd=trim($pwd);
        ob_start();//緩沖輸出
        $stmtNick = OCIParse($conn,"select count(*) countnickname from tb_user where v_nickname='$name'");
        OCIExecute($stmtNick);
         while(OCIFetchInto($stmtNick,&$arrN)){
         if ($arrN[0]==0){
         Header("Location:Logintest.php?Msg=1");
         }else{
         //用戶名通過
         unset($arrNickName); //撤消臨時數組
         $stmtPwd = OCIParse($conn,"select count(*) countpwd from tb_user where v_pwd='$pwd' and v_nickname='$name'");
         OCIExecute($stmtPwd);
        while(OCIFetchInto($stmtPwd,&$arrP,OCI_NUM)){
        if ($arrP[0]==0){
         Header("Location:Logintest.php?Msg=2");
        }else{//密碼通過
        //取出用戶的ID號
         $stmtUid = OCIParse($conn,"select n_userID from tb_user where v_nickname='$name'");
         OCIExecute($stmtUid);
         while(OCIFetchInto($stmtUid,&$arrU,OCI_NUM)){
        $intOnlineUserID=$arrU[0];
         }//while_Over
        //如果該用戶通過另一個瀏覽器重復登陸,解決如下
         $stmOnlineFlag=OCIParse($conn,"select count(*) from tb_onlineuser where N_ONLINEUSERID='$intOnlineUserID'");
         OCIExecute($stmOnlineFlag); 
         while(OCIFetchInto($stmOnlineFlag,&$arronlineFlag,OCI_NUM)){
        if ($arronlineFlag[0]!=0){ //表示已經在線
        //先取到在線用戶關聯系統ID
        $stmtSysID= OCIParse($conn,"select N_ONLINEID from tb_onlineuser where N_ONLINEUSERID='$intOnlineUserID'");
        OCIExecute($stmtSysID);
        while(OCIFetchInto($stmtSysID,&$arrSysID,OCI_NUM)){
        $SysID=$arrSysID[0];
         }//while_Over //找完后踢出該用戶
        $stmt = OCIParse($conn, "delete from tb_onlineuser where N_ONLINEUSERID='$intOnlineUserID'");
        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='$SysID'");//條件是相關聯的系統ID
        OCIExecute($stmtUserCount);
        print "添加成功到統計表中。";
        }//endif//不在線正常注冊
         $objsNickName=$name; //注冊Session變量
         unset($arrPwd); //撤消臨時數組
         srand((double)microtime()*1000000000);
         $intOnlineID = rand();//取一個系統ID號
         $DatLoginDate = date( "Y-m-d");//取得系統日期存入到Online表中去。
         $DatLogintime = time(); //取系統時間
         $DatLoginDate = "to_date('".$DatLoginDate."','YY/MM/DD')";
         $stmt = OCIParse($conn, "insert into tb_onlineuser (N_OnlineUserId,D_LoginTime,N_OnlineID) values ($intOnlineUserID,$DatLogintime,$intOnlineID)");
         OCIExecute($stmt);
         $stmtC = OCIParse($conn, "insert into TB_OnlineUserCount (N_OnlineID,N_OnlineUserId,D_LoginDate,D_LoginTime) values ($intOnlineID,$intOnlineUserID,$DatLoginDate,$DatLogintime)");
         OCIExecute($stmtC);
         Header("Location:index.php");//成功登陸!
        }//whileOVER
        }//end if
        }//while_Over
        }//end if
        }//while_Over

        ?>
        <?ob_end_flush();?>
        /*-------CheckSession-----檢查刷新程序---*/
        <?
        /*30分鐘刷新程序
        先統計出在線的用戶數,如果沒有在線用戶,系統要保證一個系統指定用戶。該系統用戶時時在線的原因是保證該刷新程序的執行
        如果該登陸用戶Session不存在了,表示用該用戶離線。統計出時間。
        */
        session_start();
        require('oracle8conn.php');
        print $objsNickName;
        ?>
        <html><head><meta HTTP-EQUIV=refresh Content='1800;url="CheckSession.php"'>
        <?
        $NowDate = date("Y-m-d");
        $NowDate = "to_date('".$NowDate."','YY/MM/DD')";
        $NowTime = time();
        //統計在線人數。30分鐘更新一次
        $stmtCount = OCIParse($conn,"select count(*) from tb_onlineuser");
        OCIExecute($stmtCount);
        while(OCIFetchInto($stmtCount,&$arrCountUser)){
        $CountUser=$arrCountUser[0];
        }
        print "目前在線人數為:".$CountUser."<br>";
        //判斷在線否?
        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."<br>";
         print "數據庫中舊時間:".$arrTest[$b][1]."<br>";
         print "用戶ID:".$arrTest[$b][0]."<br>";
         print "相差時間:".ceil(($NowTime-$arrTest[$b][1])/60)."<br>";
         }
         }
        }

        /*如果要歡察統計表與在線表用戶時間(當用戶未離線時)
        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'; 相差
        */

        ?>

        謝謝你的幫助!:_)

        溫馨提示:喜歡本站的話,請收藏一下本站!

        本類教程下載

        系統下載排行

        主站蜘蛛池模板: 91亚洲自偷在线观看国产馆| 亚洲AV永久无码区成人网站| 亚洲中文字幕久久无码| 成人免费无码大片A毛片抽搐色欲| 亚洲国产午夜电影在线入口| 182tv免费视视频线路一二三| 亚洲婷婷综合色高清在线| 免费观看无遮挡www的小视频| 亚洲国产情侣一区二区三区| 国外成人免费高清激情视频| 亚洲国产成人久久综合| 亚洲国产成人久久综合碰| 国产精品内射视频免费| 亚洲成AV人片在WWW色猫咪| 免费人成在线观看网站品爱网| 亚洲综合激情六月婷婷在线观看| 黄+色+性+人免费| 亚洲欧美日韩中文无线码| 又粗又大又长又爽免费视频| 中文字幕无线码免费人妻| 亚洲视频免费在线观看| 久久久久久免费视频| 国产成人亚洲精品电影| 亚洲欧洲无码AV电影在线观看| 97青青草原国产免费观看| 久久久久久亚洲精品影院| 亚洲Aⅴ无码一区二区二三区软件| xxxx日本在线播放免费不卡| 日韩亚洲AV无码一区二区不卡| 毛片免费观看的视频在线| 永久免费观看黄网站| 日本亚洲视频在线| 青苹果乐园免费高清在线| 一级人做人a爰免费视频| 亚洲福利一区二区| www.亚洲色图.com| 国产成人福利免费视频| a免费毛片在线播放| 亚洲av无码一区二区三区观看| 亚洲精品国产自在久久| 99久久99久久精品免费看蜜桃|