php里session的用法Word文档格式.docx
《php里session的用法Word文档格式.docx》由会员分享,可在线阅读,更多相关《php里session的用法Word文档格式.docx(6页珍藏版)》请在冰豆网上搜索。
可以用$_SESSION[name]或$HTTP_SESSION_VARS[name]的形式来取值或赋值。
3、session_is_registered
检查变量是否被登记为会话变量。
boobeansession_is_registered(stringname);
这个函数可检查当前的session之中是否已有指定的变量注册,参数name就是要检查的变量名。
成功则返回逻辑值true。
4、session_unregister
删除已注册的变量。
booleansession_session_unregister(stringname);
这个函数在当前的session之中删除全局变量中的变量。
参数name就是欲删除的变量名,成功则返回true.
5、Session_destroy
结束当前的会话,并清空会话中的所有资源。
booleansessiondestroy(void);
这个函数结束当前的session,此函数没有参数,且返回值均为true
上面介绍函数下文将会用到,但还有一些有关session的函数也介绍一下:
6、session_encode
sesssion信息编码
stringsession_encode(void);
字符串
返回的字符串中包含全局变量中各变量的名称与值,形式如:
a|s:
12:
"
itisatest"
;
c|s:
4:
lala"
a是变量名s:
12代表变量a的值"
itisatest的长度是12变量间用分号”;
”分隔。
7、session_decode
sesssion信息解码
booleansession_decode(stringdata)
这个函数可将session信息解码,成功则返回逻辑值true
8、session_name
存取当前会话名称
booleansession_name(string[name]);
这个函数可取得或重新设置当前session的名称。
若无参数name则表示获取当前session名称,加上参数则表示将session名称设为参数name
9、session_id
存取当前会话标识号
booleansession_id(string[id]);
这个函数可取得或重新设置当前存放session的标识号。
若无参数id则表示只获取当前session的标识号,加上参数则表示将session的标识号设成新指定的id
10、session_unset
删除所有已注册的变量。
voidsession_unset(void)
这个函数和Session_destroy不同,它不结束会话。
就如同用函数session_unregister逐一注销掉所有的会话变量。
编程思路
在社区、论坛中,我们常能看到当前在线的会员,使访问者有宾至如归之感。
但这种程序是怎么做出来的呢?
流程如下:
建表user,保存注册用户信息。
字段
类型
备注
userid
Int(10)
用户序列号auto_increment关键字
username
Varchar(50)
用户匿称
userpwd
密码
email
电子信箱
oicq
OICQ号
signature
mediumtext
签名
imgurl
头像
joindate
加入时间
建类文件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
序列号auto_increment关键字
用户序列号取自user表
ipaddress
Ip地址
lastactivity
最后活动时间,用它来判断用户是否还在线
建类文件session.php定义函数
insert($userid,$ipaddress,$lastactivity)把登录成功的用户插入到表中
update($userid,$ipaddress,$lastactivity)更新在线用户最后活动时间
del($con)删除满足条件的用户,用它来清除离线用户
公用文件global.php
include"
class/config.inc.php"
//把配置文件包含进来
$db=newdb;
$db->
db_connect();
//连接数据库
$user=newuser;
//初始化
$session=newsession;
//启动会话
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;
//更新最后活动时间,如时一个小时之内未调动页面就认为用户已离线,从而会被删除。
update($userid,$ipaddress,$lastactivity);
}else{
//如果未登录那直接转入登录页面
$firstpage="
logon.php"
header("
Location:
$firstpage"
);
exit;
}
登录文件logon.php
if($hiddenField=="
0"
){//测检表单有未被提交
username='
$username'
anduserpwd='
$userpwd'
$result=$user->
get_from_condition($con);
if($user->
counter==1){
if(!
session_is_registered("
)){//检测是否被登记过
session_register("
//登记一个新的变量为会话变量
ccauser"
)){
$ccauser=$username;
//给会话变量赋值
$online="
//这个变量在global.php用到以更新最后活动时间lastactivity
$userid=$user->
userid;
userid=$userid"
//判断会话是否存在,有可能你在不同的机器上登两次。
if($session->
//如存在,更新
insert($userid,$ipaddress,$lastactivity);
//如不存在,插入
//在客户机设置COOKIES
SetCookie("
$username,time()+3600);
Header("
test.php"
//然后导向测试页
?
>
if($HTTP_SESSION_VARS["
){//判断是否已登录
//下面是登录的表单
名称:
密码:
echo"
网友:
.$HTTP_COOKIE_VARS["
]."
你已经登录了"
//如果已登录则显示提示
$str="
[url=exit.php]退出社区[/url]"
echo$str;
测试文件test.php
global.php"
//把global.php文件包含进来
$strWelcome="
欢迎[color=red]"
.$_SESSION['
ccauser'
[/color]
echo$strWelcome;
//显示欢迎信息
$str=”当前在线用户:
===================
”;
1=1"
//提出session表中所有记录即是当前在线用户,未把游客算在内
$result=$session->
while($row=mysql_fetch_array($result)){
$con1="
userid=$row[userid]"
$user->
get_from_condition($con1);
$str.=$user->
username."
"
[url=exit.php]退出社区[/url]
退出文件exit.php
if($_SESSION["
){
userid=$userid"
//在session表中删除用户信息。
session_destroy();
//结束当前的会话,并清空会话中的所有资源
已经退出社区......"
本文来自CSDN博客,转载请标明出处: