会话数据ci3基本控制器怎么用?ci3 session类用法详解
- 前端开发
- 2026-06-18
- 8
在CodeIgniter 3(简称CI3)框架的开发体系中,控制器(Controller)扮演着核心路由分发与业务逻辑协调的关键角色,理解并熟练运用基本控制器,是构建高效、可维护Web应用的基础,CI3采用MVC(Model-View-Controller)架构模式,其中控制器负责接收用户的HTTP请求,调用相应的模型处理数据,并加载视图进行渲染,掌握会话数据在基本控制器中的流转机制,对于实现用户状态管理、权限验证及个性化体验至关重要。
我们需要明确CI3中基本控制器的结构规范,一个标准的控制器类通常继承自CI_Controller(在较新版本中可能为MX_Controller或其他自定义基类),并位于application/controllers目录下,类名必须首字母大写,且文件名需与类名一致,在构造函数中,开发者通常会加载必要的库(Library)、辅助函数(Helper)以及模型(Model),为了处理会话数据,必须显式加载session库,这是所有会话操作的前提,因为CI3默认不会自动加载该库。
会话数据在CI3中主要通过$this->session对象进行访问,它支持多种存储方式,包括PHP原生Session、Cookie加密存储以及数据库存储,在基本控制器中,设置会话数据通常使用set_userdata方法,而读取则使用userdata方法,这种设计使得开发者可以像操作数组一样便捷地管理用户状态,当用户成功登录时,控制器会将用户ID、用户名及角色信息存入会话,以便在后续请求中快速识别用户身份。
为了更清晰地展示会话数据在控制器中的常见操作,以下表格归纳了核心API及其用途:
| 方法名称 | 参数说明 | 功能描述 | 示例代码片段 |
|---|---|---|---|
| set_userdata() | 数组或键值对 | 向会话中写入新数据或更新现有数据 | $this->session->set_userdata('user_id', 101); |
| userdata() | 键名(可选) | 获取指定会话数据,若未传参则返回所有数据 | $user = $this->session->userdata('username'); |
| unset_userdata() | 键名或数组 | 从会话中移除指定数据 | $this->session->unset_userdata('temp_token'); |
| mark_as_flash() | 键名或数组 | 标记数据为Flash数据,仅在下一次请求有效 | $this->session->mark_as_flash('success_msg');
|
| set_flashdata() | 键值对数组 | 一次性会话数据,常用于显示操作成功提示 | $this->session->set_flashdata('msg', '保存成功'); |


