首页 后端开发 php教程 php判断在线用户实例详解

php判断在线用户实例详解

Apr 18, 2017 pm 03:37 PM
判断 在线 用户

怎么才能准确的判断用户是否在线呢?下面小编就来给大家分享一个实例。

解决了昨天的问题:表结果变了一下,如下:

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(&#39;oracle8conn.php&#39;);
$name=trim($name);
$pwd=trim($pwd);
ob_start();      //缓冲输出

 $stmtNick = OCIParse($conn,"select count(*) countnickname from tb_user where v_nickname=&#39;$name&#39;"); 

 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=&#39;$pwd&#39; and v_nickname=&#39;$name&#39;"); 
           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=&#39;$name&#39;"); 
       OCIExecute($stmtUid);
       while(OCIFetchInto($stmtUid,&$arrU,OCI_NUM)){
            $intOnlineUserID=$arrU[0];          
       }//while_Over    
    //如果该用户通过另一个浏览器重复登陆,解决如下 
       $stmOnlineFlag=OCIParse($conn,"select count(*) from tb_onlineuser where N_ONLINEUSERID=&#39;$intOnlineUserID&#39;");
       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=&#39;$intOnlineUserID&#39;"); 
                  OCIExecute($stmtSysID);
                  while(OCIFetchInto($stmtSysID,&$arrSysID,OCI_NUM)){
                      $SysID=$arrSysID[0];          
                   }//while_Over                                     //找完后踢出该用户 
                  $stmt = OCIParse($conn, "delete from tb_onlineuser where N_ONLINEUSERID=&#39;$intOnlineUserID&#39;");
                  OCIExecute($stmt);
                  print "删除成功";                                  //最后作记录备份
                  $tmpTime=time(); //结束时间
                  $DatLoginDate = date( "Y-m-d");//结束日期
                  $DatLoginDate = "to_date(&#39;".$DatLoginDate."&#39;,&#39;YY/MM/DD&#39;)";
                  $stmtUserCount = OCIParse($conn, "update tb_onlineusercount set D_OverDate=$DatLoginDate ,D_OverTime=$tmpTime where N_OnlineID=&#39;$SysID&#39;");//条件是相关联的系统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(&#39;".$DatLoginDate."&#39;,&#39;YY/MM/DD&#39;)";    
       $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
?>
登录后复制
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
2 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
2 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
2 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

如何用小红书号查找用户?能查到手机号吗? 如何用小红书号查找用户?能查到手机号吗? Mar 22, 2024 am 08:40 AM

随着社交媒体的迅速发展,小红书已经成为了备受青睐的社交平台之一。用户可以通过创建小红书号来展示个人身份,并与其他用户交流互动。如果你需要查找某个用户的小红书号码,可以按照以下简单步骤进行操作。一、如何用小红书号查找用户?1.打开小红书APP,点击右下角的“发现”按钮,然后选择“笔记”选项。2.在笔记列表中,找到你想查找的用户发布的那篇笔记。点击进入笔记详情页。3.在笔记详情页中,点击用户头像下方的“关注”按钮,即可进入该用户的个人主页。4.在用户个人主页右上角,点击三个点按钮,然后选择“个人信息

以超级用户身份登录Ubuntu 以超级用户身份登录Ubuntu Mar 20, 2024 am 10:55 AM

在Ubuntu系统中,root用户通常是禁用状态的。要激活root用户,可以使用passwd命令设置密码,然后使用su-命令以root身份登录。根用户是具有系统管理权限且不受限制的用户。他拥有访问和修改文件、用户管理、软件安装和删除,以及系统配置更改等权限。根用户与普通用户有着明显的区别,根用户拥有系统中最高的权限和更广泛的控制权。根用户可以执行重要的系统命令和编辑系统文件,而普通用户则无法做到这一点。在本指南中,我将探讨Ubuntu根用户,如何以根用户身份登录,以及它与普通用户的不同之处。注意

如何使用Laravel开发一个在线餐厅预订系统 如何使用Laravel开发一个在线餐厅预订系统 Nov 02, 2023 pm 01:48 PM

如何使用Laravel开发一个在线餐厅预订系统近年来,随着互联网和移动互联网的快速发展,线上预订已成为现代人生活中不可或缺的一部分。餐饮行业也不例外,越来越多的餐厅开始提供在线预订服务,以提高用户体验和扩大市场份额。本文将介绍如何使用Laravel框架来开发一个简单但功能完善的在线餐厅预订系统,并提供具体的代码示例,方便读者学习和实践。环境搭建首先,我们需要

什么是 sudo,为什么它如此重要? 什么是 sudo,为什么它如此重要? Feb 21, 2024 pm 07:01 PM

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

教程:Ubuntu系统如何删除普通用户账户? 教程:Ubuntu系统如何删除普通用户账户? Jan 02, 2024 pm 12:34 PM

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

Linux系统中的用户密码存储机制解析 Linux系统中的用户密码存储机制解析 Mar 20, 2024 pm 04:27 PM

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

如何使用Java Websocket实现在线音视频通话? 如何使用Java Websocket实现在线音视频通话? Dec 02, 2023 am 09:44 AM

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

Oracle数据库:一个用户是否可以拥有多个表空间? Oracle数据库:一个用户是否可以拥有多个表空间? Mar 03, 2024 am 09:24 AM

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

See all articles