跟随我在oracle学习php(38)
Posted rightgram
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了跟随我在oracle学习php(38)相关的知识,希望对你有一定的参考价值。
SESSION
基本原理
会话数据原文存储于浏览器端,原始数据安全性较低。
如果cookie数据量较大,由于每次请求都要携带,增加带宽使用。
使用session技术来实现:
将会话数据,存储于服务器端!同时使会话数据可以区分浏览器!
为每个会话数据建立独立的会话数据区(来存储当前会话的全部数据),每个会话数据区存在唯一的标志,同时浏览器端存储该唯一标志,做配对使用!
基本操作
开启session机制
函数可以开启:
Session_start();
也可以通过php.ini设置为自动开启:
Session.auto_start
利用$_SESSION操作session数据
增,删,改,查,都是使用$_SESSION完成。
每个元素,就是session数据。
就像操作普通数组一样,操作$_SESSION数组,就可以完成对session数据的操作!
SESSION
Session原理
存储于浏览器端Cookie中的session-id,就是一个普通的cookie变量(在session机制中尤其特殊的含义)
也是在响应时将session-id cookie变量PHPSESSID设置好:
每个会话,所生成存储于服务器端的session数据区
默认的,以文件的形式,存储于服务器端操作系统的临时目录中:
Session数据属性
有效期
会话周期结束
有效路径
整站有效
有效域
当前域
是否仅安全连接传输
否
属性的管理
以上session数据的特征,都是由,浏览器cookie中所存储的session-idcookie变量的特征所导致的。
可见,如果需要更改session数据的属性,则需要更改存储session-ID的cookie变量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数据。
观察:$_SESSION与session数据区的交互情况:
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();
以上是关于跟随我在oracle学习php(38)的主要内容,如果未能解决你的问题,请参考以下文章