PHP Session管理

<?php
//创建会话	启动会话-注册会话-使用会话-删除会话
//(1)启动会话 由两种方法
//bool session_start(void) 通常在页面开始位置调用,然后会话变量被登录到数据$_SESSION
//使用之前不能浏览器不能有任何输出
//session_register() 用来为会话创建一个变量来隐含地启动会话,但要求设置php.ini文件的选项,即将register_globals
//指令设置为on,然后重新启动Apache服务器即可
//(2)注册会话
//会话变量被创建后,全部保存在$_SESSION数组中。通过数组$_SESSION创建一个会话变量很容易
//只要直接给数组添加一个元素即可
session_start();
$_SESSION["admin"]=null;
//(3)使用会话
//首先需要判断会话变量是否有一个会话ID存在,如果不存在,就创建会话,并且使其能够通过$_SESSION进行访问
//如果已经存在,则将这个已创建的会话变量载入以供用户使用
if(!empty($_SESSION["session_name"]))	//判断用于存储用户名的session会话变量是否为空
	$myvalue=$_SESSION["session_name"];	//将会话变量赋给一个变量$myvalue
//(4)删除会话
//删除会话有单个删除会话 删除多个会话 结束当前会话3种
//①删除单个会话
unset($_SESSION["user"]);
//使用unset函数时要注意$_SESSION中的元素不能省略,即不可以一次注销整个数组,这样会禁止整个会话的功能,
//如unset($_SESSION)会将全局变量$_SESSION销毁,而且没有办法使其恢复,用户也不能在注册$_SESSION变量,如果要
//删除多个或全部的话,可采用下面的两种方法
//②删除多个会话
//删除多个会话即一次注销所有的会话变量,可以通过将一个空的数组赋给$_SESSION来实现
$_SESSION=array();
//③结束当前会话
//如果整个会话已经结束,首先应注销所有的会话变量,然后使用session_destroy()
//函数清楚结束当前的会话,并清空会话中的所有资源,彻底销毁session
session_destroy();
?>
<?php
//session设置时间
//在大多数论坛中都可以在登录时对失败时间进行选择,如保存一个星期,保存一个月等。这时就可以通过cookie
//设置登录的失败时间。session失效时间设置主要有一下两种方法
//(1)客户端没有禁止cookie
//①使用session_set_cookie_params()设置session的失效时间,此函数是session结合cookie设置失效时间。
//如果要让session在1分钟后失效,代码如下
$time=1*60;	//设置失效时间
session_set_cookie_params($time);	//必须在session_start()之前调用
session_start();	//初始化session
$_SESSION["username"]="mr";
//不推荐用此函数,此函数在一些浏览器上会出现问题,所以一般手动设置失效时间
//②使用setcookie()可对session设置失效时间
session_start();
$time=1*60;
setcookie(session_name(),session_id(),time()+$time,"/");
$_SESSION["user"]="mr";
//在上面的setcookie()函数中,session_name()是Session的名称,session_id是判断客户端用户的标识。
//因为session_id是随机产生的唯一名称,所以session是相对安全的。
//(2)客户端禁止cookie
//当客户端禁止cookie时,session的页面间传递会失效。解决这个问题有4种办法
//①在登录之前提醒用户必须打开cookie。这是很多论坛的做法
//②设置php.ini文件中的session.user_trans_sid=1,或者编译时打开-anable-trans-sid选项。
//让PHP自动跨页面传递session_id
//③通过get方法,用隐藏表单传递session_id
//④使用文件和数据库存储session_id,在页面传递中手动调用
?>
<form id="form1" name="form1" method="post" action="xxx.php?<?=session_name();?>=<?=session_id();?>"></form>
<?php
//第3中实现方式
$sess_name=session_name();	//取得session的名称
$sess_id=$_GET[$sess_name];	//取得session_id GET方式
session_id($sess_id);	//关键步骤
session_start();
$_SESSION["admin"]="mrsoft";
//session为请求该页面之后会产生一个session_id,这时如果禁止了cookie就无法传递session_id,在请求下一个页面时又会产生一个session_id,这样就造成了session在页面间传递失效

//3.通过session判断用户的操作权限
//在大多数网站的开发过程中,需要划分管理员和普通用户对操作网站的权限。
?>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值