2016-04-26 22 views
0

我正在创建一个REST API以与我的Android应用程序一起使用,因此我启用了CodeIgniter数据库会话管理器(我遵循此answer),在用户登录时存储来自我的用户的一些信息在如何解码会话表中的BLOB数据对象CI

这里是我的代码来存储信息:

$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应用程序,并且每当我的应用程序需要从服务器发回的信息时。我还创建了选择查询以获取BLOB对象:

$data = $this->db->query("SELECT data FROM ci_sessions WHERE id='5c825c032b6cf25b10e984f0ee8e1bd48a2c1916'"); 
    $query = $data->result(); 

但是,如何访问数据的密钥以获取值?

回答

0

笨已经这样做,对你,如果你想为整套项目的数组:

$this->session->all_userdata() 

这将返回所有键和值,如果你只是想抓住一个特定的值,则:

$this->session->userdata('foo'); 

其中foo是您要检索的值的关键。

它的工作原理与it is on the documentation完全一样,唯一的区别是会话数据存储在数据库中,而不是由PHP/Web服务器处理。因此,只需使用通常的方法来存储或访问数据。您不必直接查询数据库以获取会话信息。

更新:

另外,还要确保你首先需要在控制器中加载它的手段首先加载会议库,在构造函数中:

public function __construct() 
{ 
    $this->load->library('session'); 
} 

或者通过autoloading the library(我” d宁可推荐)

+0

那么CodeIgniter如何知道要检索哪个会话数据呢?是真的有必要从我的android应用程序发回我的会话ID到服务器? –

+0

REST是无状态的,HTTP也是。您不能拥有REST API并尝试使其表现得像浏览器会话,因此,您需要查询会话。你有没有考虑过使用令牌? –

+0

我应该如何使用令牌?那么,有没有我们可以使用BLOB对象? –

相关问题