# SESSION支持
[上一页](# "上一页")[下一页](# "下一页")
系统提供了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
~~~
### session取值
Session取值使用:
~~~
$value = session('name');
// 获取所有的session 3.2.2版本新增
$value = session();
~~~
### session删除
删除某个session的值使用:
~~~
session('name',null); // 删除name
~~~
要删除所有的session,可以使用:
~~~
session(null); // 清空当前的session
~~~
### session判断
要判断一个session值是否已经设置,可以使用
~~~
// 判断名称为name的session值是否已经设置
session('?name');
~~~
### 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目录下面(详见扩展部分)。
[上一页](# "上一页")[下一页](# "下一页")