- 开启session机制
session_start()
注意:session_start()函数前不能有输出!除非开启ob缓存。
- 操作数据
对$_SESSION数组进行操作
- 浏览器端保存SessionID,默认为当前域名下的所有目录及其子目录生效。即默认设置cookie
的path值为'/'
- 服务器保存session数据
默认保存方式:每个会话都会生成一个session数据文件,文件名为:sess_加SessionID
- session可以存储除了资源以外的任何类型数据。
数据被序列化后再保存到文件中。
- $_SESSION的元素下标不能为整型!
因为只对元素值进行序列化。
元素内的数组下标无此要求。
- 生存周期
默认是浏览器关闭
因为浏览器保存的cookie变量SessionID是临时的
但是服务器端的session数据文件不一定消失(需要等待session的垃圾回收机制来处理)
可以延长cookie中PHPSESSID变量的生命周期。(不推荐)
php.ini配置session.gc_maxlifetime
- 删除数据
$_SESSION变量在脚本结束时依然会消失。开启session机制时会造出$_SESSION变量。
$_SESSION与保存session数据的文件是两个空间。
unset($_SESSION['key'])只是删除数组内的该元素,不会立即相应到保存session数据的文件上。
等到脚本结束,才会将$_SESSION的数据写入到该文件中。
session_destroy() 销毁保存session数据的文件,也不会对该文件写入内容。
并不删除$_SESSION变量,unset或脚本结束才会删除该变量。
如何完全删除一个session?需删除3部分
unset($_SESSION);
删除$_SESSION变量后,数据文件并未被改动。如果单独使用unset,则需先置空
$_SESSION = array()
session_destroy();
setcookie('PHPSESSID', '', time()-1); //保险做法是将其生命周期失效
整个脚本周期内,只对数据文件读一次、写一次。
session_start 开启或恢复会话机制
session_id 获取或设置当前会话ID
session_destroy 销毁当前会话的所有数据(销毁数据文件)
session_name 获取或设置当前会话名称(cookie变量名,默认为PHPSESSID)
session_save_path 获取或设置当前会话数据文件保存路径
session_set_save_handler 设置用户自定义的会话数据存储函数
session_unset 释放所有会话变量(清空$_SESSION数组元素)
session_encode 将当前会话数据编码为一个字符串
session_decode 将字符串解译为会话数据
session_write_close 写入会话数据并关闭会话
session_register_shutdown 关闭会话
session_set_cookie_params 设置会话cookie变量,必须在session_start()前使用。
session_set_cookie_params(0,"/webapp/"); //设置session生存时间
session_get_cookie_params 获取会话cookie变量。返回包含当前会话cookie信息的数组