我正在创建一个与我的Android应用程序一起使用的REST API,因此我启用了CodeIgniter数据库会话管理器(我遵循此answer),以便在用户登录时存储一些信息。
以下是我存储信息的代码:
$this->session->set_userdata('key', 'value');
这是我的config.php:
$config['sess_driver'] = 'database';
$config['sess_cookie_name'] = 'ci_session';
$config['sess_expiration'] = 7200;
$config['sess_save_path'] = 'ci_sessions';
$config['sess_match_ip'] = FALSE;
$config['sess_time_to_update'] = 300;
$config['sess_regenerate_destroy'] = FALSE;
$config['sess_expire_on_close'] = TRUE;
$config['sess_encrypt_cookie'] = TRUE;
我的问题是:如何获取已存储在会话表中的信息?我只在列ci_session上看到一个BLOB对象,但我该如何解码它或如何使用它?
我已将会话ID从我的服务器发送到我的Android应用程序,每当我的应用程序需要来自服务器的信息时,它都会将其发回。我还创建了select查询来获取BLOB对象:
$data = $this->db->query("SELECT data FROM ci_sessions WHERE id='5c825c032b6cf25b10e984f0ee8e1bd48a2c1916'");
$query = $data->result();
但是如何访问数据的密钥才能获得值?
答案 0 :(得分:0)
CodeIgniter已经为你做了,如果你想要一整套项目的数组:
$this->session->all_userdata()
如果您只想获取特定值,那么将返回所有键和值:
$this->session->userdata('foo');
foo
是您要检索的值的关键字。
它与it is on the documentation完全相同,唯一的区别是会话数据存储在数据库中而不是由PHP / Webserver处理。因此,只需使用常用方法来存储或访问数据。您不必直接查询数据库以获取会话信息。
<强>更新强>
还要确保首先通过在构造函数中将其加载到控制器中来加载会话库:
public function __construct()
{
$this->load->library('session');
}
或autoloading the library(我宁愿推荐)