All articles| All Pictures| All Softwares| All Video| Go home page| Write articles| Upload pictures

Reading number is top 10 articles
利用XMLHTTP从其他页面获取网页数据_JavaScript技术_编程技术
精通数据库系列之入门-基础篇1_mssql学习_编程技术
C#过滤所有HTML代码的函数_[Asp.Net教程]
ASP.NET,Atlas,ListView显示列表数据_[Asp.Net教程]
在C#中取得指定长度的字符串_[Asp.Net教程]
VS2005中获取新增记录的ID方法总结_[Asp.Net教程]
SQL注入技术和跨站脚本攻击的检测_[SQL,Server教程]
Sys.ScriptLoader与JS加载进度条的实现_.net资料_编程技术
教你用PHP写MySQL数据库的用户认证系统_php资料_编程技术
ASP.NET2.0新特性概述_[Asp.Net教程]
Reading number is top 10 pictures
More attractive than sora aoi3
世界各国15岁的MM有什么不同
美女和狗狗2
中国女孩大胆自拍,显露完美身材2
So beauty, will let you spray blood7
The real super beauty13
超强高考作文
9.3阅兵全景图4-陸海空现代化兵种方阵梯队
Wild animals melee moment of life and death2
擦地板的大叔太好了
Download software ranking
Unix video tutorial11
Tram sex maniac 2 (H) rar bag17
I'm come from Beijing1
网页特效实例大全
Sora aoi, the maid, students' uniforms
Unix video tutorial7
超级战舰
网络管理员第三版
The Bermuda triangle2
Unix video tutorial6
aaa published in(发表于) 2013/12/24 5:54:05 Edit(编辑)
如何利用PHP会话显示出当前在线的用户_php资料_编程技术

如何利用PHP会话显示出当前在线的用户_php资料_编程技术

如何利用PHP会话显示出当前在线的用户_php资料_编程技术-你的首页-uuhomepage.com

如何利用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 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;

$db-> db_connect( ); //连接数据库

$user = new user; //初始化

$session = new session;


//启动会话

session_start();

//删除session表中已经过期的用户(即非在线网友)因为此文件总是被调用从而保证显示的都是当前在线的用户

$curtime=time();

$con="lastactivity<$curtime";

$session->del($con);


//正在线的网友需不断更新session表中的lastactivity时间,并重新设置用户的COOKIES

if ($HTTP_SESSION_VARS["online"]=="on"){ //此处也可用$_SESSION[“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;

}

登录文件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_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); //如不存在,插入

}


//在客户机设置COOKIES

SetCookie("ccauser",$username,time()+3600);

Header("Location:test.php");//然后导向测试页

}

}

?>

if($HTTP_SESSION_VARS["online"]=="") { //判断是否已登录

?>

//下面是登录的表单



名称:

密码:





}else{

echo "网友:".$HTTP_COOKIE_VARS["ccauser"]."你已经登录了"; //如果已登录则显示提示

$str="

退出社区";

echo $str;

}

?>


测试文件test.php

include "global.php"; //把global.php文件包含进来

$strWelcome="欢迎".$_SESSION['ccauser']."
";

echo $strWelcome; //显示欢迎信息

$str=” 当前在线用户:
===================
”;

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

?>


退出社区


退出文件exit.php

include "global.php"; //把global.php文件包含进来

if ($_SESSION["online"]=="on"){

$con="userid=$userid";

$session->del($con); //在session表中删除用户信息。

session_destroy(); //结束当前的会话,并清空会话中的所有资源

echo "已经退出社区......";

}

?>












添加到del.icio.us 添加到新浪ViVi 添加到百度搜藏 添加到POCO网摘 添加到天天网摘365Key 添加到和讯网摘 添加到天极网摘 添加到黑米书签 添加到QQ书签 添加到雅虎收藏 添加到奇客发现 diigo it 添加到饭否 添加到飞豆订阅 添加到抓虾收藏 添加到鲜果订阅 digg it 貼到funP 添加到有道阅读 Live Favorites 添加到Newsvine 打印本页 用Email发送本页 在Facebook上分享


Disclaimer Privacy Policy About us Site Map

If you have any requirements, please contact webmaster。(如果有什么要求,请联系站长)
Copyright ©2011-
uuhomepage.com, Inc. All rights reserved.