解析php中session相关应用

在前面的文章中,给大家分享了Cookie的相关应用,本文小编将继续为大家分享Session的相关应用。这两个应用有些类似,但是也有很大的不同,和Cookie一样,Session也是php学习中,初学者必须掌握的、非常重要的知识点。废话不多说,我们一起来看看Session的使用方法吧。

1、Session(会话)是什么

Session(会话)是有始有终的一系列动作/消息,具体指一个终端用户与交互系统进行通信的时间间隔,通常指从注册进入系统到注销退出系统所经过的时间,实际上是一个特定的时间概念。

当启动一个Session会话时,会生成一个随机且唯一的session_id,也就是Session的文件名,此时session_id存储在服务器的内存中。当关闭页面时此id会自动注销,重新登录此页面,会再次生成一个随机且唯一的id。

2、Session的功能

在web端,Session非常重要,因为网页是一种无状态的连接程序,无法得知用户的浏览状态。通过Session则可记录用户的有关信息,以提供用户再次以此身份对Web服务器提交请求时作确认。Session适用于存储信息量比较少的情况,并且对存储内容不需要长期存储,通常Session会话是存储到服务器端的。

3、创建Session(会话)

Session会话在使用前,首先要创建,具体的创建流程为:
启动会话—注册会话—使用会话—删除会话

1)启动会话
PHP中,会话的启动方式主要有两种 ,分别是使用session_start()函数和session_register()函数。

session_start()函数启动会话,在页面开始位置调用,然后会话变量被登录到数据$_SESSION。session_start()函数之前浏览器不能有任何输出。

session_register()函数创建会话,为会话创建一个变量来隐含地启动会话,但要求设置php.ini文件的选项,即将register_globals指令设置为On,然后重启服务器。

在会话启动中,需要注意的一点就是,使用session_register()函数时,不需要调用session_start()函数,PHP会在创建变量之后隐含地调用session_start()函数。

2)注册会话

会话变量被创建后,全部保存在数组$_SESSION中,通过数组$_SESSION创建一个会话变量很容易,只要直接给该数组添加一个元素即可。
比如:

3)使用会话
首先判断会话变量是否有一个会话ID存在,如果不存在,就创建一个,并且使其能够通过全局数组$_SESSION进行访问;如果已经存在,则将这个已创建的会话变量载入以供用户使用。

4)删除会话
删除会话的方法主要有三种,即删除单个会话、删除多个会话和结束当前会话。

1>删除单个会话
删除单个会话即删除单个会话变量,同数组的操作一样,直接注销$_SESSION数组的某个元素即可。
unset($_SESSION[“user”]);

在单个会话删除中,需要注意的一点就是,使用unset()函数时, $_SESSION数组中元素不能省略,即不可以一次注销整个数组,这样会禁止整个会话的功能,如unset($_SESSION)函数会将全局变量$_SESSION销毁,而且没有办法将其恢复,用户也不能再注册$_SESSION变量。

2>删除多个会话
删除多个会话即一次注销所有的会话变量,可以通过将一个空的数组赋值给$_SESSION来实现。

$_SESSION = array();

3>结束当前会话
如果整个会话已经结束,首先应该注销所有的会话变量,然后使用session_destroy()函数清除结束当前的会话,并清空会话中的所有资源,彻底销毁Session。
session_destory()

4、Session 设置失效时间
在Session使用完以后,我们需要为它设置一个失效时间,具体方法主要有以下两种:

1)客户端没有禁止Cookie

1>使用session_set_cookie_params()设置Session的失效时间,此函数是Session结合Cookie设置失效时间。

但是,要注意的是session_set_cookie_params()必须在session_start()之前调用,但是不推荐此函数,在使用过程中会出现与浏览器不兼容的问题。

2>使用setcookie()函数可对Session设置失效时间,如让Session在2分钟后失效。

2)客户端禁止Cookie

当客户端禁用Cookie时,Session页面间传递会失效,这怎么办呢?我们可以通过下面几种方法实现:

1>在登录之前提醒用户必须打开Cookie。
2>设置php.ini文件中的session.use_trans_sid=1,或者编译时打开-enable-trans-sid选项,让PHP自动跨页面传递session_id。
3>通过GET方法,隐藏表单传递session_id。

<form id="form1" name="form1" method="post" action="xx.php?<?=session_name();?>=<?=session_id();?>">

 //接收页面头部

 <!--?php

     $session_name = session_name();//取得Session名称

     $session_id = $_GET[$session_name];//取得session_id GET方式

     session_id($session_id);

     session_start();

     $_SESSION["user"] = "admin";

 ?-->

4>使用文件或者数据库存储session_id,在页面间传递中手动调用。

以上就是php中,session的相关原理和具体使用方法,大家可以在自己代码中试试上面的方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值