加入收藏 | 设为首页 | 会员中心 | 我要投稿 济源站长网 (https://www.0391zz.cn/)- 数据工具、数据仓库、行业智能、CDN、运营!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

PHP展示当前在线用户

发布时间:2022-07-07 14:02:10 所属栏目:PHP教程 来源:互联网
导读:如何利用PHP会话显示出当前在线的用户,在PHP中session的用法。 PHP中的session默认情况下是使用客户端的Cookie。当客户端的Cookie被禁用时,会自动通过Query_String来传递。 Php处理会话的函数一共有11个,我们详细介绍一下将要用到几个函数。 1、 session_
  如何利用PHP会话显示出当前在线的用户,在PHP中session的用法。

  PHP中的session默认情况下是使用客户端的Cookie。当客户端的Cookie被禁用时,会自动通过Query_String来传递。
  
  Php处理会话的函数一共有11个,我们详细介绍一下将要用到几个函数。
  1、 session_start
  函数功能:开始一个会话或者返回已经存在的会话。
  函数原型:boolean session_start(void);
  返回值:布尔值
  功能说明:这个函数没有参数,且返回值均为true。最好将这个函数置于最先,而且在它之前不能有任何输出,否则会报警,如:Warning: Cannot send session cache limiter - headers already sent (output started at /usr/local/apache/htdocs/cga/member/1.php:2) in /usr/local/apache/htdocs/cga/member/1.php on line 3
  2、 session_register
  函数功能:登记一个新的变量为会话变量
  函数原型:boolean session_register(string name);
  返回值:布尔值。
  功能说明:这个函数是在全局变量中增加一个变量到当前的SESSION中,参数name就是想要加入的变量名,成功则返回逻辑值true。可以用_SESSION[name]或HTTP_SESSION_VARS[name]的形式来取值或赋值。
  3、 session_is_registered
  函数功能:检查变量是否被登记为会话变量。
  函数原型:boobean session_is_registered(string name);
  返回值:布尔值
  功能说明:这个函数可检查当前的session之中是否已有指定的变量注册,参数name就是要检查的变量名。成功则返回逻辑值true。
  4、 session_unregister
  函数功能:删除已注册的变量。
  函数原型:boolean session_session_unregister(string name);
  返回值:布尔值
  功能说明:这个函数在当前的session之中删除全局变量中的变量。参数name就是欲删除的变量名,成功则返回true.
  5、 Session_destroy
  函数功能:结束当前的会话,并清空会话中的所有资源。
  函数原型:boolean session destroy(void);
  返回值:布尔值。
  功能说明:这个函数结束当前的session,此函数没有参数,且返回值均为true
  
  上面介绍函数下文将会用到,但还有一些有关session的函数也介绍一下:
  6、 session_encode
  函数功能:sesssion信息编码
  函数原型:string session_encode(void);
  返回值:字符串
  功能说明:返回的字符串中包含全局变量中各变量的名称与值,形式如:a|s:12:"it is a test";c|s:4:"lala"; a是变量名 s:12代表变量a的值"it is a test的长度是12 变量间用分号”;”分隔。
  7、 session_decode
  函数功能:sesssion信息解码
  函数原型:boolean session_decode (string data)
  返回值:布尔值
  功能说明:这个函数可将session信息解码,成功则返回逻辑值true
  8、 session_name
  函数功能:存取当前会话名称
  函数原型:boolean session_name(string [name]);
  返回值:字符串
  功能说明:这个函数可取得或重新设置当前session的名称。若无参数name则表示获取当前session名称,加上参数则表示将session名称设为参数name
  9、 session_id
  函数功能:存取当前会话标识号
  函数原型:boolean session_id(string [id]);
  返回值:字符串
  功能说明:这个函数可取得或重新设置当前存放session的标识号。若无参数id则表示只获取当前session的标识号,加上参数则表示将session的标识号设成新指定的id
  10、 session_unset
  函数功能:删除所有已注册的变量。
  函数原型:void session_unset (void)
  返回值:布尔值
  功能说明:这个函数和Session_destroy不同,它不结束会话。就如同用函数session_unregister逐一注销掉所有的会话变量。
  编程思路
  在社区、论坛中,我们常能看到当前在线的会员,使访问者有宾至如归之感。但这种程序是怎么做出来的呢?
  流程如下:
  如何利用PHP会话显示出当前在线的用户
  建表user,保存注册用户信息。
  字段
  类型
  备注
  userid
  Int(10)
  用户序列号 auto_increment 关键字
  username
  Varchar(50)
  用户匿称
  userpwd
  Varchar(50)
  密码
  email
  Varchar(50)
  电子信箱
  oicq
  Varchar(50)
  OICQ号
  signature
  mediumtext
  签名
  imgurl
  Varchar(50)
  头像
  joindate
  Varchar(50)
  加入时间
  建类文件user.php 定义函数
  exist(username)确认新注册用户是不是已经存在
  nsert(username,userpwd,email,oicq,imgurl,signature)插入注册用户
  update(userid,username,userpwd,email,oicq,imgurl,signature) 更新用户数据
  get_from_condition(con) 返回满足查询条件的记录集
  建表session。当用户登录时即向此表插入新记录,离开或超时后删除记录,保证表中保存的是当前在线的用户。
  字段
  类型
  备注
  sessionid
  Int(10)
  序列号 auto_increment 关键字
  userid
  Int(10)
  用户序列号取自user表
  ipaddress
  Varchar(50)
  Ip地址
  lastactivity
  Int(10)
  最后活动时间,用它来判断用户是否还在线
  建类文件session.php 定义函数
  insert(userid,ipaddress,lastactivity) 把登录成功的用户插入到表中
  update(userid,ipaddress,lastactivity)更新在线用户最后活动时间
  del(con)删除满足条件的用户,用它来清除离线用户
  get_from_condition(con) 返回满足查询条件的记录集
  公用文件global.php
  include "class/config.inc.php"; //把配置文件包含进来
  db = new db;

  //下面是登录的表单
  <form name="form1" method="post" action="">
  名称: <input type="text" name="username">
  密码: <input type="text" name="userpwd">
  <input type="hidden" name="hiddenField" value="0">
  <input type="submit" name="Submit" value="提交">
  <input type="reset" name="Submit2" value="重置">
  </form>
  <?
  }else{
  echo "网友:".HTTP_COOKIE_VARS["ccauser"]."你已经登录了"; //如果已登录则显示提示
  str="<br><br><a href='exit.php'>退出社区</a>";
  echo str;
  }
  ?>
  
  测试文件test.php
  <?
  include "global.php"; //把global.php文件包含进来
  strWelcome="欢迎<font color=red>"._SESSION['ccauser']."</font><br>";
  echo strWelcome; //显示欢迎信息
  str=” 当前在线用户:<br>===================<br>”;
  con=" 1=1";
  //提出session表中所有记录即是当前在线用户,未把游客算在内
  result=session->get_from_condition(con);
  while(row=mysql_fetch_array(result)){
  
  con1="userid=row[userid]";
  user->get_from_condition(con1);
  str.=user->username." ";
  }
  echo str;
  ?>
  <br><a href='exit.php'>退出社区</a>
  
  退出文件exit.php
  <?
  include "global.php"; //把global.php文件包含进来
  if (_SESSION["online"]=="on"){
  con="userid=userid";
  session->del(con); //在session表中删除用户信息。
  session_destroy(); //结束当前的会话,并清空会话中的所有资源
  echo "已经退出社区......";
  }
  ?>

(编辑:济源站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读