如何利用PHP会话显示出当前在线的用户.doc_第1页
如何利用PHP会话显示出当前在线的用户.doc_第2页
如何利用PHP会话显示出当前在线的用户.doc_第3页
如何利用PHP会话显示出当前在线的用户.doc_第4页
如何利用PHP会话显示出当前在线的用户.doc_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

如何利用PHP会话显示出当前在线的用户,在PHP中session的用法。综述PHP会话即SESSION是指用户从进入网站到关闭网站这段时间内活动的一种机制,它提供了所有网页都共同使用的公共变量存贮机制。那么SESSION到底有什么用处呢?网上购物时大家都用过购物车,你可以随时把你选购的商品加入到购物车中,最后再去收银台结帐。在整个过程中购物车一直扮演着临时存贮被选商品的角色,用它追踪用户在网站上的活动情况,这就是SESSION的作用。SESSION的发明填补了HTTP协议的局限,HTTP协议被认为是无状态协议,当它在服务端完成响应之后,服务器就失去了与该浏览器的联系。会话的发明使得一个用户在多个页面间切换时能够保存他的信息。在PHP3版本未直接提供session功能,我们只能用其它办法来实现,比如用PHPLIB。如果说PHP4与PHP3相比,它最大的进步就是提供了SESSION。Session基础知识要使用session需要PHP4.1以上的版本,而且需要把php.ini中的register_globle=Off设成register_globle=On。另外,session.cookie_path = / 这行不易更改。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 32、 session_register函数功能:登记一个新的变量为会话变量函数原型:boolean session_register(string name);返回值:布尔值。功能说明:这个函数是在全局变量中增加一个变量到当前的SESSION中,参数name就是想要加入的变量名,成功则返回逻辑值true。可以用$_SESSIONname或$HTTP_SESSION_VARSname的形式来取值或赋值。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信息解码,成功则返回逻辑值true8、 session_name函数功能:存取当前会话名称函数原型:boolean session_name(string name);返回值:字符串功能说明:这个函数可取得或重新设置当前session的名称。若无参数name则表示获取当前session名称,加上参数则表示将session名称设为参数name9、 session_id函数功能:存取当前会话标识号函数原型:boolean session_id(string id);返回值:字符串功能说明:这个函数可取得或重新设置当前存放session的标识号。若无参数id则表示只获取当前session的标识号,加上参数则表示将session的标识号设成新指定的id10、 session_unset函数功能:删除所有已注册的变量。函数原型:void session_unset (void)返回值:布尔值功能说明:这个函数和Session_destroy不同,它不结束会话。就如同用函数session_unregister逐一注销掉所有的会话变量。编程思路在社区、论坛中,我们常能看到当前在线的会员,使访问者有宾至如归之感。但这种程序是怎么做出来的呢?流程如下:建表user,保存注册用户信息。字段类型备注useridInt(10)用户序列号auto_increment关键字usernameVarchar(50)用户匿称userpwdVarchar(50)密码emailVarchar(50)电子信箱oicqVarchar(50)OICQ号signaturemediumtext签名imgurlVarchar(50)头像joindateVarchar(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。当用户登录时即向此表插入新记录,离开或超时后删除记录,保证表中保存的是当前在线的用户。字段类型备注sessionidInt(10)序列号auto_increment关键字useridInt(10)用户序列号取自user表ipaddressVarchar(50)Ip地址lastactivityInt(10)最后活动时间,用它来判断用户是否还在线建类文件session.php 定义函数insert($userid,$ipaddress,$lastactivity) 把登录成功的用户插入到表中update($userid,$ipaddress,$lastactivity)更新在线用户最后活动时间del($con)删除满足条件的用户,用它来清除离线用户get_from_condition($con) 返回满足查询条件的记录集公用文件global.phpinclude class/config.inc.php; /把配置文件包含进来$db = new db;$db- db_connect( ); /连接数据库$user = new user; /初始化$session = new session;/启动会话session_start();/删除session表中已经过期的用户(即非在线网友)因为此文件总是被调用从而保证显示的都是当前在线的用户$curtime=time();$con=lastactivitydel($con);/正在线的网友需不断更新session表中的lastactivity时间,并重新设置用户的COOKIESif ($HTTP_SESSION_VARSonline=on) /此处也可用$_SESSION“online”$userid=$HTTP_SESSION_VARSuserid; /取当前在线用户的userid$ipaddress=substr($REMOTE_ADDR,0,50);$lastactivity=time()+3600; /更新最后活动时间,如时一个小时之内未调动页面就认为用户已离线,从而会被删除。$session-update($userid,$ipaddress,$lastactivity);else/如果未登录那直接转入登录页面$firstpage=logon.php;header (Location: $firstpage);exit;登录文件logon.phpget_from_condition($con);if ($user-counter=1)if (!session_is_registered(online)/检测是否被登记过session_register(online); /登记一个新的变量为会话变量if (!session_is_registered(ccauser)session_register(ccauser);if (!session_is_registered(userid)session_register(userid);$ccauser=$username; /给会话变量赋值$online=on; /这个变量在global.php用到以更新最后活动时间lastactivity$userid=$user-userid;$ipaddress=substr($REMOTE_ADDR,0,50);$lastactivity=time()+3600;$con= userid=$userid;$session-get_from_condition($con);/判断会话是否存在,有可能你在不同的机器上登两次。if ($session-counter=1)$session-update($userid,$ipaddress,$lastactivity); /如存在,更新else$session-insert($userid,$ipaddress,$lastactivity); /如不存在,插入/在客户机设置COOKIESSetCookie(ccauser,$username,time()+3600);Header(Location:test.php);/然后导向测试页?/下面是登录的表单名称: 密码: ?elseecho 网友:.$HTTP_COOKIE_VARSccauser.你已经登录了; /如果已登录则显示提示$str=退出社区;echo $str;?测试文件test.php?include global.php; /把global.php文件包含进来$strWelcome=欢迎.$_SESSIONccauser.;echo $strWelcome; /显示欢迎信息$str=” 当前在线用户:=”;$con= 1=1;/提出session表中所有记录即是当前在线用户,未把游客算在内$result=$s

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论