碰巧被困了将近一天。在谷歌搜索中搜索为什么这没有像预期的那样工作,在stackoverflow中也回答了几个问题,但无法弄清楚为什么它不工作。基本上,我在登录期间设置会话数据,如
foreach($response as $item) {
$sess_array = array(
'user_id' => $item->id,
'photo' => $item->user_pic,
);
}
// Create session
$this->session->set_userdata('logged_in', $sess_array);
现在我正在尝试更新一个名为'photo'的特定变量。
$this->session->set_userdata('photo', $new_name);
当我试图在我的视图中显示会话变量'photo'的值时,它仍然显示旧值而不是更新的值。
下面是config.php
中的条目$config['sess_driver'] = 'files';
$config['sess_cookie_name'] = 'ci_session';
$config['sess_expiration'] = 7200;
$config['sess_save_path'] = BASEPATH . 'cache/sessions/';
$config['sess_match_ip'] = FALSE;
$config['sess_time_to_update'] = 300;
$config['sess_regenerate_destroy'] = TRUE;
Codeigniter版本3.1.10Windows 10
请帮助。
首先检查你的autoload.php是否加载了会话库。或者在控制器中加载会话库。$this->load->library('session');
foreach($response as $item) { // looping your obj $response
$sess_array = array( // set an array
'user_id' => $item->id,
'photo' => $item->user_pic,
);
}
print_r($sess_array); you will get the last element of you $response obj here.
// Create session
$this->session->set_userdata('logged_in', $sess_array); // here you are setting the last obj of $response in you session logged_in
`$this->session->set_userdata('photo', $new_name);` // here you store an variable $new_name in session `photo`
在设置会话后从控制器当前功能重定向到新功能。例如,
class session extend CI_Controller{
function set_session(){
$new_name = 'xyz';
$this->session->set_userdata('photo', $new_name);
return redirect('session/get_session');
}
function get_session(){
$this->load->view('sample');
}
}
In your viewsample.php
<body><h1>
<?php
echo $this->session->userdata('photo');
// here you got out put 'xyz'
?>
</h1></body>
希望你能找到你出错的地方。