我有一个从模型中获取数据并将该数据存储在会话变量中的函数:
public function fetchData() {
$somedata = $this->some_model->some_function();
$this->session->set_userdata('mydata',$somedata);
}
现在,如果我以相同的方法访问会话并打印,那么它可以工作,但是当我以其他方法访问此会话变量时,它就无法工作。
public function showData() {
$mydata = $this->session->userdata('mydata');
print_r($mydata); // it prints nothing
}
当我在showData()方法中打印会话时,它只打印用户详细信息:
Array
(
[session_id] => 9c7bc7a7a8acad514d4ece2c841c1403
[ip_address] => 192.168.0.115
[user_agent] => Mozilla/5.0 (Windows NT 6.1; rv:33.0) Gecko/20100101 Firefox/33.0
[last_activity] => 1416898254
[user_data] =>
[user] => testuser
[currentUser] => testuser
[userID] => 1
[email_address] => testuser@gmail.com
[first_name] => Test
[last_name] => User
[logged] => 1
[account_type] => admin
[currentUserName] => Test user
)
当然我在autoload.php中设置会话默认加载并尝试加载构造函数但没有任何工作。
有人可以告诉我为什么会这样吗?
提前致谢。
答案 0 :(得分:0)
我通过在db。中存储会话解决了这个问题。
要保存大数据我使用数据库(请参阅"将会话数据保存到数据库"在http://codeigniter.com/user_guide/libraries/sessions.html中)。
这拯救了我的生命。
答案 1 :(得分:0)
您正在使用此命令:
$this->session->set_userdata('some_name', 'some_value');
但是这个命令仅在你想要一次添加一个值时使用,而且没有什么可以说你可以使用一个值/行作为数组,所以我建议你使用:< / p>
// pass the array to userdata, and not one value containing an array.
$this->session->set_userdata('array_value');
理解/阅读您的代码会更好。而且似乎你正在尝试输出完全数组,对吗? 这很简单:
print_r($this->session->all_userdata()); // prints all userdata
它将返回一个像这样的关联数组:
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
)
但是,当然,您定义的关联。如果您只想打印一行,请使用:
// print one row, i.e: 'session_id', 'ip_address'.
print_r($this->session->userdata('associative_value_you_defined'));
有关详细信息,请访问CodeIgniter Session Class。
答案 2 :(得分:0)
这是迟到的,但我觉得这是正确的答案,它将帮助有同样问题的人。
以这种方式访问一个变量:
$ data = $ this-&gt; session-&gt; userdata(&#39; mydata&#39;);
然后:
echo $ data [&#39; last_name&#39;]; //访问姓氏变量
要打印整个数组,只需执行:
$ data = $ this-&gt; session-&gt; all_userdata();
然后:
echo $ data;