经典php中解决显示在线用户实例

上传人:飞*** 文档编号:40662882 上传时间:2018-05-26 格式:DOC 页数:10 大小:33.50KB
返回 下载 相关 举报
经典php中解决显示在线用户实例_第1页
第1页 / 共10页
经典php中解决显示在线用户实例_第2页
第2页 / 共10页
经典php中解决显示在线用户实例_第3页
第3页 / 共10页
经典php中解决显示在线用户实例_第4页
第4页 / 共10页
经典php中解决显示在线用户实例_第5页
第5页 / 共10页
点击查看更多>>
资源描述

《经典php中解决显示在线用户实例》由会员分享,可在线阅读,更多相关《经典php中解决显示在线用户实例(10页珍藏版)》请在金锄头文库上搜索。

1、php 中 session 的用法 PHP 中的 session 默认情况下是使用客户端的 Cookie。当客户端的 Cookie 被禁用时,会自动通过 Query_String 来传递。 Php 处理会话的函数一共有 11 个,我们详细介绍一下将要用到几个函数。 1、 session_start 函数功能:开始一个会话或者返回已经存在的会话。 函数原型:boolean session_start(void); 返回值:布尔值 功能说明:这个函数没有参数,且返回值均为 true。最好将这个函数置于最先,而且在它之前不能有任何输出,否则会报警,如:Warning: Cannot send ses

2、sion 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 就是想

3、要加入的变量名,成功则返回逻辑值 true。可以用$_SESSIONname或$HTTP_SESSION_VARSname的形式来取值或赋值。 3、 session_is_registered 函数功能:检查变量是否被登记为会话变量。 函数原型:boobean session_is_registered(string name); 返回值:布尔值 功能说明:这个函数可检查当前的 session 之中是否已有指定的变量注册,参数name 就是要检查的变量名。成功则返回逻辑值 true。 4、 session_unregister 函数功能:删除已注册的变量。 函数原型:boolean sessi

4、on_session_unregister(string name); 返回值:布尔值 功能说明:这个函数在当前的 session 之中删除全局变量中的变量。参数 name 就是欲删除的变量名,成功则返回 true. 5、 Session_destroy 函数功能:结束当前的会话,并清空会话中的所有资源。 函数原型:boolean session destroy(void); 返回值:布尔值。 功能说明:这个函数结束当前的 session,此函数没有参数,且返回值均为 true 上面介绍函数下文将会用到,但还有一些有关 session 的函数也介绍一下: 6、 session_encode 函

5、数功能: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 信息解码,成功则返

6、回逻辑值 true 8、 session_name 函数功能:存取当前会话名称 函数原型:boolean session_name(string name); 返回值:字符串 功能说明:这个函数可取得或重新设置当前 session 的名称。若无参数 name 则表示获取当前 session 名称,加上参数则表示将 session 名称设为参数 name 9、 session_id 函数功能:存取当前会话标识号 函数原型:boolean session_id(string id); 返回值:字符串 功能说明:这个函数可取得或重新设置当前存放 session 的标识号。若无参数 id则表示只获取当

7、前 session 的标识号,加上参数则表示将 session 的标识号设成新指定的 id 10、 session_unset 函数功能:删除所有已注册的变量。 函数原型:void session_unset (void) 返回值:布尔值 功能说明:这个函数和 Session_destroy 不同,它不结束会话。就如同用函数session_unregister 逐一注销掉所有的会话变量。 编程思路 在社区、论坛中,我们常能看到当前在线的会员,使访问者有宾至如归之感。但这种程序是怎么做出来的呢? 流程如下: 建表 user,保存注册用户信息。 字段 类型 备注 userid Int(10) 用户

8、序列号 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)插入

9、注册用户 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)

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; $db- db_c

11、onnect( ); /连接数据库 $user = new user; /初始化 $session = new session; /启动会话 session_start(); /删除 session 表中已经过期的用户(即非在线网友)因为此文件总是被调用从而保证显示的都是当前在线的用户 $curtime=time(); $con=“lastactivitydel($con); /正在线的网友需不断更新 session 表中的 lastactivity 时间,并重新设置用户的COOKIES if ($HTTP_SESSION_VARS“online“=“on“) /此处也可用$_SESSION“

12、online” $userid=$HTTP_SESSION_VARS“userid“; /取当前在线用户的 userid $ipaddress=substr($REMOTE_ADDR,0,50); $lastactivity=time()+3600; /更新最后活动时间,如时一个小时之内未调动页面就认为用户已离线,从而会被删除。 $session-update($userid,$ipaddress,$lastactivity); else /如果未登录那直接转入登录页面 $firstpage=“logon.php“; header (“Location: $firstpage“); exit;

13、 登录文件 logon.php if ($hiddenField=“0“) /测检表单有未被提交 $con=“username=$username and userpwd=$userpwd“; $result=$user-get_from_condition($con); if ($user-counter=1) if (!session_is_registered(“online“)/检测是否被登记过 session_register(“online“); /登记一个新的变量为会话变量 if (!session_is_registered(“ccauser“) session_registe

14、r(“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_condit

15、ion($con); /判断会话是否存在,有可能你在不同的机器上登两次。 if ($session-counter=1) $session-update($userid,$ipaddress,$lastactivity); /如存在,更新 else $session-insert($userid,$ipaddress,$lastactivity); /如不存在,插入 /在客户机设置 COOKIES SetCookie(“ccauser“,$username,time()+3600); Header(“Location:test.php“);/然后导向测试页 ? if($HTTP_SESSION

16、_VARS“online“=“) /判断是否已登录 ? /下面是登录的表单 名称: 密码: else echo “网友:“.$HTTP_COOKIE_VARS“ccauser“.“你已经登录了“; /如果已登录则显示提示 $str=“ url=exit.php退出社区/url“; echo $str; ? 测试文件 test.php include “global.php“; /把 global.php 文件包含进来 $strWelcome=“欢迎color=red“.$_SESSIONccauser.“/color “; echo $strWelcome; /显示欢迎信息 $str=” 当前在线用户: = ”; $con=“ 1=1“; /提出 session 表中所有记录即是当前在线用户,未把游客算在内 $result

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 资格认证/考试 > 其它考试类文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号