来自数据库的Codeigniter Session userdata不返回值

时间:2015-11-19 03:22:09

标签: php codeigniter session

您好我正在尝试访问当前会话的时间戳。我正在尝试使用$this->session->userdata('timestamp');访问其值,但它返回NULL。我尝试了var_dump($this->session->all_userdata());,但它似乎只知道$this->session->set_userdata('blah', 'blah');设置的变量。

Config看起来像:

$config['sess_driver'] = 'database';
$config['sess_cookie_name'] = 'ci_session';
$config['sess_expiration'] = 0;
$config['sess_save_path'] = 'ci_sessions';
$config['sess_match_ip'] = FALSE;
$config['sess_time_to_update'] = 300;
$config['sess_regenerate_destroy'] = FALSE;

它可以存储数据库中会话的ip_address,timestamp,id,但我试图找到一种方法来访问该数据库中的值。

例如,我已完成var_dump($this->session->all_userdata());

我将看到的是一个值为'blah'的数组,而不是存储在表中的值。

我做错了吗?

3 个答案:

答案 0 :(得分:1)

CI_Session专用于此主题的手册的一部分:http://www.codeigniter.com/userguide3/libraries/sessions.html#accessing-session-metadata

正如您从该链接中可以理解的那样,没有直接的方式来访问会话时间戳。如果您正在使用数据库驱动程序,则必须从数据库中获取它 - 没有别的办法。

答案 1 :(得分:0)

使用:

$this->session->__ci_last_regenerate

$_SESSION['__ci_last_regenerate']

答案 2 :(得分:-1)

您是否将时间戳存储到用户数据中?如果是,则只有您需要获得会话的当前时间戳,然后才需要使用以下代码。

$sessionData = $this->session->all_userdata();

SessionData contain following array values and you can use the `last_activity` 
Array
(
    [session_id] => 4a5a5dca22728fb0a84364eeb405b601
    [ip_address] => 127.0.0.1
    [user_agent] => Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_7;
    [last_activity] => 1303142623
)

获取更多帮助

  

https://ellislab.com/codeigniter/user-guide/libraries/sessions.html