系统提供了Session管理和操作的完善支持,全部操作可以通过一个内置的session函数完成,该函数可以完成Session的设置、获取、删除和管理操作。 ## session初始化设置 如果session方法的第一个参数传入数组则表示进行session初始化设置,例如: ~~~ session(array('name'=>'session_id','expire'=>3600)); ~~~ 支持传入的session参数包括: | 参数名 | 说明 | |-----|-----| | id | session_id值 | | name | session_name 值 | | path | session_save_path 值 | | prefix | session 本地化空间前缀 | | expire | session.gc_maxlifetime 设置值 | | domain | session.cookie_domain 设置值 | | use_cookies | session.use_cookies 设置值 | | use_trans_sid | session.use_trans_sid 设置值 | | type | session处理类型,支持驱动扩展 | Session初始化设置方法无需手动调用,在Think\App类的初始化工作结束后会自动调用,通常项目只需要配置`SESSION_OPTIONS`参数即可,`SESSION_OPTIONS`参数的设置是一个数组,支持的索引名和前面的session初始化参数相同。 默认情况下,初始化之后系统会自动启动session,如果不希望系统自动启动session的话,可以设置`SESSION_AUTO_START`为false,例如: ~~~ 'SESSION_AUTO_START' =>false ~~~ 关闭自动启动后可以项目的公共文件或者在控制器中通过手动调用`session_start`或者`session('[start]')`启动session。 ## session赋值 Session赋值比较简单,直接使用: ~~~ session('name','value'); //设置session ~~~ 3.2.3版本开始,session赋值操作支持二维,例如: ~~~ session('user.user_id',10); //设置session ~~~ ## session取值 Session取值使用: ~~~ $value = session('name'); // 获取所有的session 3.2.2版本新增 $value = session(); ~~~ 3.2.3版本开始支持二维数组取值,例如: ~~~ $value = session('user.user_id'); ~~~ ## session删除 删除某个session的值使用: ~~~ session('name',null); // 删除name ~~~ 3.2.3版本开始支持删除二维数组,例如: ~~~ session('user.user_id',null); // 删除session ~~~ 要删除所有的session,可以使用: ~~~ session(null); // 清空当前的session ~~~ ## session判断 要判断一个session值是否已经设置,可以使用 ~~~ // 判断名称为name的session值是否已经设置 session('?name'); ~~~ 3.2.3版本开始,支持判断二维数组,例如: ~~~ session('?user.user_id'); ~~~ ## session管理 session方法支持一些简单的session管理操作,用法如下: ~~~ session('[操作名]'); ~~~ 支持的操作名包括: | 操作名 | 含义 | |-----|-----| | start | 启动session | | pause | 暂停session写入 | | destroy | 销毁session | | regenerate | 重新生成session id | 使用示例如下: ~~~ session('[pause]'); // 暂停session写入 session('[start]'); // 启动session session('[destroy]'); // 销毁session session('[regenerate]'); // 重新生成session id ~~~ ## 本地化支持 如果在初始化session设置的时候传入`prefix`参数或者单独设置了`SESSION_PREFIX`参数的话,就可以启用本地化session管理支持。启动本地化session后,所有的赋值、取值、删除以及判断操作都会自动支持本地化session。 本地化session支持开启后,生成的session数据格式由原来的 `$_SESSION['name']` 变成 `$_SESSION['前缀']['name']`。 ## session handler支持 初始化session设置的时候如果传入了`type`参数或者设置了`SESSION_TYPE`参数的话,则会自动引入对应的Session处理驱动,驱动目录位于Library/Think/Session/Driver目录下面(详见扩展部分)。