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框架来开发一个简单但功能完善的在线餐厅预订系统,并提供具体的代码示例,方便读者学习和实践。环境搭建首先,我们需要

sudo(超级用户执行)是Linux和Unix系统中的一个关键命令,允许普通用户以root权限运行特定命令。sudo的功能主要体现在以下几个方面:提供权限控制:sudo通过授权用户以临时方式获取超级用户权限,从而实现了对系统资源和敏感操作的严格控制。普通用户只能在需要时通过sudo获得临时的特权,而不需要一直以超级用户身份登录。提升安全性:通过使用sudo,可以避免在常规操作中使用root账户。使用root账户进行所有操作可能会导致意外的系统损坏,因为任何错误或不小心的操作都将具有完全的权限。而

Ubuntu系统添加了很多用户,想在不用的用户想要删除,该怎么删除呢?下面我们就来看看详细的教程。1、打开终端命令行,运用userdel命令删除指定的用户,注意要加sudo权限指令,如下图所示2、在删除的时候一定注意是在管理员目录下的,普通的用户是没有这个权限的,如下图所示3、删除指令执行完了以后怎么判断是否真正删除了呢?下面我们运用cat命令打开passwd文件,如下图所示4、我们看到passwd文件中已经没有了所删除的用户信息了,这证明用户已经被删除了,如下图所示5、然后我们进入home文件

Linux系统中的用户密码存储机制解析在Linux系统中,用户密码的存储是非常重要的安全机制之一。本文将解析Linux系统中用户密码的存储机制,包括密码的加密存储、密码的验证过程以及如何安全地管理用户密码。同时,将通过具体的代码示例展示密码存储的实际操作过程。一、密码的加密存储在Linux系统中,用户密码并不是以明文的形式存储在系统中,而是经过加密后保存。L

如何使用JavaWebsocket实现在线音视频通话?在当今数字化时代,实时通信变得越来越普遍。无论是在工作中进行远程协作,还是在家庭中与亲朋好友进行远程交流,实时音视频通话已经成为人们不可或缺的一部分。本文将介绍如何使用JavaWebsocket实现在线音视频通话,并提供具体的代码示例。一、了解WebsocketWebsocket是一种HTML5中的新

Oracle数据库是一种常用的关系型数据库管理系统,许多用户都会遇到关于表空间的使用问题。在Oracle数据库中,一个用户可以拥有多个表空间,这样可以更好地管理数据存储和组织。本文将探讨一个用户如何在Oracle数据库中拥有多个表空间,并提供具体的代码示例。在Oracle数据库中,表空间是用来存储表、索引、视图等对象的逻辑结构。每个数据库都至少有一个表空间,
