跟随我在oracle学习php(38)

SESSION

基本原理

会话数据原文存储于浏览器端,原始数据安全性较低。

如果cookie数据量较大,由于每次请求都要携带,增加带宽使用。

使用session技术来实现:

会话数据,存储于服务器端!同时使会话数据可以区分浏览器!

每个会话数据建立独立的会话数据区(来存储当前会话的全部数据,每个会话数据区存在唯一的标志同时浏览器端存储该唯一标志,做配对使用!

基本操作

开启session机制

函数可以开启:

Session_start();

可以通过php.ini设置为自动开启:

Session.auto_start

利用$_SESSION操作session数据

,删,改,查,都是使用$_SESSION完成

每个元素,就是session数据。

就像操作普通数组一样,操作$_SESSION数组,就可以完成对session数据的操作

SESSION

Session原理

存储于浏览器端Cookiesession-id,就是一个普通的cookie变量(在session机制中尤其特殊的含义)

也是在响应时将session-id cookie变量PHPSESSID设置好:

每个会话,所生成存储于服务器端的session数据区
默认的,以文件的形式,存储于服务器端操作系统的临时目录中:

Session数据属性

有效期

会话周期结束

有效路径

整站有效

有效

当前

是否仅安全连接传输

属性的管理

以上session数据特征,都是浏览器cookie中所存储的session-idcookie变量的特征所导致的。

可见,如果需要更改session数据属性,则需要更改存储session-IDcookie变量PHPSESSID的属性:

Php.ini中存在该属性的配置:

有效期

路径

有效域

安全连接传输:

HTTPONLY

如果需要对默认属性加以修改,办法如下:

A计划

更改php.ini配置文件即可(不建议)

B计划

通过在脚本中,使用函数ini_set()进行配置的修改,仅在设置后的脚本周期内有效,要保证在开启session前设置完毕(可以选择)

Ini_set(‘选项’, ‘值’)

C计划推荐)

使用特定功能函数:

session_set_cookie_params(有效期, 有效路径,有效域,是否仅安全传输,是否HTTPONLY)

完成设置

在开启session前设置完毕

注意

选项的设置是针对cookie中sessionID因此是针对所有session数据

Tip

Session属性通常都会保持其默认值,不建议修改!

Session使用语法问题

Session数据可以是任意的数据类型

就是因为session数据,内的数据是序列化后才存储的!

$_SESSION数组元素的下标,仅仅可以是字符串类型

Session_start()类似于header函数,前不应该有输出

Session数据区

脚本周期,持久存储当前会话session数据区域。

脚本周期内,使用$_SESSION这个变量管理的会话session数据

观察$_SESSIONsession数据区的交互情况:

Session销毁

使用函数 

session_destroy()

完成。

销毁:删除当前session对应的数据,关闭session机制!

关闭session机制后,导致余下的session操作都不处理!

注意

$_SESSION 变量,在销毁session后,是不会自动消失,但结束不完成写操作。因此下次脚本周期,就不能获取到存储的session数据。

如何完整删除与当前session相关的全部数据

Session_destroy(); 数据区

Unset($_SESSION); 销毁变量

//setCookie(‘PHPSESSID’, ‘’, time()-1), 销毁cookie中的session-iD

setCookie(session_name(), ‘’, time()-1), 销毁cookie中的session-iD

tip

PHPSESSID,称之为session.name 可以被配置的php.ini

使用函数session_name()获取当前的值!

如何清空session数据

不要 unset($_SESSION)

需要$_SESSION = array();

猜你喜欢

转载自www.cnblogs.com/RighTgraM/p/10925030.html