TP框架session会话处理机制
2019-06-11 本文已影响0人
LittleTrue
默认情况下,初始化之后系统会自动启动session,如果不希望系统自动启动session的话,可以在TP的CONFIG.PHP文件中设置:
'SESSION_AUTO_START' =>false
框架自动处理session会获取$_COOKIE['PHPSESSID']作为本次会话的ID识别会话并自动初始化session(使用CONFIG.PHP文件中配置参数数组
), 之后会话中的key_value存储与读取都是基于这次同一ID的会话, 如果SESSION_AUTO_START为FALSE时需要进行本次会话的手动初始化。
手动初始化会话, 可以在项目的公共文件或者在控制器中通过手动调用助手函数session_start()、session('[start]') 或者框架封装的SESSION操作类, 并传入初始化参数数组, 来启动session。
初始化的参数:
图片.png初始化:
//TP5的初始化方法
Session::init(['id' => $session_id, 'prefix'=> 'hyappMS_']);
Session::start();
//助手函数的初始化方法 TP3.2 5通用
session(['id' => $session_id, 'prefix'=> 'hyappMS_']);
session_start();
后话:
一般来说, 只有TP框架作为小程序的接口提供端才需要进行session的手动初始化, 因为小程序不允许操作cookie, 行内通用的解决方法是将后端登录时返回的SESSION_ID存储在缓存中, 并在请求头中增加一个SESSION_ID的请求头携带缓存中的数据, 后端获取请求头来识别是否小程序内的访问, 如果是使用此SESSION_ID内容来初始化会话。