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---该程序是登陆检查程序----*/ <? 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 ?>

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

熱門話題

隨著社群媒體的迅速發展,小紅書已經成為了備受青睞的社群平台之一。用戶可以透過建立小紅書號來展示個人身份,並與其他用戶交流互動。如果你需要找某個用戶的小紅書號碼,可以按照以下簡單步驟來操作。一、如何用小紅書號找出用戶? 1.開啟小紅書APP,點選右下角的「發現」按鈕,然後選擇「筆記」選項。 2.在筆記清單中,找到你想找的用戶發布的筆記。點擊進入筆記詳情頁。 3.在筆記詳情頁中,點選使用者頭像下方的「追蹤」按鈕,即可進入該使用者的個人首頁。 4.在使用者個人主頁右上角,點選三個點按鈕,然後選擇「個人資訊

在Ubuntu系統中,root使用者通常是停用狀態的。要啟動root用戶,可以使用passwd指令設定密碼,然後使用su-指令以root身分登入。根用戶是具有系統管理權限且不受限制的使用者。他擁有存取和修改檔案、使用者管理、軟體安裝和刪除,以及系統配置變更等權限。根用戶與一般用戶有著明顯的區別,根用戶擁有系統中最高的權限和更廣泛的控制權。根用戶可以執行重要的系統命令和編輯系統文件,而普通用戶則無法做到這一點。在本指南中,我將探討Ubuntu根用戶,如何以根用戶身份登錄,以及它與一般用戶的不同之處。注意

如何使用Laravel開發一個線上餐廳預訂系統近年來,隨著網路和行動網路的快速發展,線上預訂已成為現代人生活中不可或缺的一部分。餐飲業也不例外,越來越多的餐廳開始提供線上預訂服務,以提高用戶體驗並擴大市場份額。本文將介紹如何使用Laravel框架來開發一個簡單但功能完善的線上餐廳預訂系統,並提供具體的程式碼範例,方便讀者學習和實踐。環境搭建首先,我們需要

Ubuntu系統增加了許多用戶,想在不用的用戶想要刪除,該怎麼刪除呢?下面我們就來看看詳細的教學。 1.開啟終端命令列,運用userdel指令刪除指定的用戶,注意要加sudo權限指令,如下圖所示2、在刪除的時候一定注意是在管理員目錄下的,普通的用戶是沒有這個權限的,如下圖所示3、刪除指令執行完了以後怎麼判斷是否真正刪除了呢?下面我們運用cat指令開啟passwd文件,如下圖所示4、我們看到passwd檔案中已經沒有了所刪除的使用者資料了,這證明使用者已經被刪除了,如下圖所示5、然後我們進入home文件

sudo(超級使用者執行)是Linux和Unix系統中的關鍵指令,允許一般使用者以root權限執行特定指令。 sudo的功能主要體現在以下幾個方面:提供權限控制:sudo透過授權使用者以臨時方式取得超級使用者權限,從而實現了對系統資源和敏感操作的嚴格控制。普通用戶只能在需要時透過sudo獲得臨時的特權,而不需要一直以超級用戶登入。提升安全性:透過使用sudo,可以避免在常規操作中使用root帳號。使用root帳戶進行所有操作可能會導致意外的系統損壞,因為任何錯誤或不小心的操作都將具有完全的權限。而

Linux系統中的使用者密碼儲存機制解析在Linux系統中,使用者密碼的儲存是非常重要的安全機制之一。本文將解析Linux系統中使用者密碼的儲存機制,包括密碼的加密儲存、密碼的驗證過程以及如何安全地管理使用者密碼。同時,將透過具體的程式碼範例展示密碼儲存的實際操作流程。一、密碼的加密儲存在Linux系統中,使用者密碼並不是以明文的形式儲存在系統中,而是經過加密後儲存。 L

如何使用JavaWebsocket實現線上音視訊通話?在當今數位化時代,即時通訊變得越來越普遍。無論是在工作中進行遠端協作,或是在家庭中與親朋好友進行遠端交流,即時音視訊通話已成為人們不可或缺的一部分。本文將介紹如何使用JavaWebsocket實現線上音視訊通話,並提供具體的程式碼範例。一、了解WebsocketWebsocket是一種HTML5中的新

Oracle資料庫是一種常用的關聯式資料庫管理系統,許多使用者都會遇到關於表空間的使用問題。在Oracle資料庫中,一個使用者可以擁有多個表空間,這樣可以更好地管理資料儲存和組織。本文將探討一個使用者如何在Oracle資料庫中擁有多個表空間,並提供具體的程式碼範例。在Oracle資料庫中,表空間是用來儲存表格、索引、視圖等物件的邏輯結構。每個資料庫至少有一個表空間,
