PHP Codeigniter 3.1.10:无法更新会话数据



碰巧被困了将近一天。在谷歌搜索中搜索为什么这没有像预期的那样工作,在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>

希望你能找到你出错的地方。

相关内容

  • 没有找到相关文章

最新更新