2015-06-04 50 views
0

我在codeigniter中使用会话,它工作正常,但我无法更改该值。 我用这个函数:无法更改codeigniter中的会话值

$this->session->set_userdata('check', 0); 

我必须在“检查”的值更改为0。

为什么不能?

我的问题是,为什么我不能更改值会话?我这样设置值首次:

$sess_array = array(
     'userid' => $row->userid, 
     'pseudo' => $row->pseudo, 
     'check' => $row->check 
); 
$this->session->set_userdata('logged_in', $sess_array); 
+0

什么问题它似乎不清楚 –

+0

你是如何设置的价值在第一次? – Maraboc

+0

该代码必须更改会话值。如何知道它不起作用? –

回答

1
$sess_array = array(
    'userid' => $row->userid, 
    'pseudo' => $row->pseudo, 
    'check' => $row->check 
); 
// you have set session key 'logged_in' 
$this->session->set_userdata('logged_in', $sess_array); 

// Get session value from existing key 
$arrSession = $this->session->userdata('logged_in'); 
$arrSession['check'] = 0; 
$this->session->set_userdata('logged_in', $arrSession); 

您需要更新如上所示的值。

如果您希望按照指示设置“检查”值。你需要做如下

$sess_array = array(
    'userid' => $row->userid, 
    'pseudo' => $row->pseudo, 
    'check' => $row->check 
); 
// Note that no key specified. 
$this->session->set_userdata($sess_array); 
// Now i think you can set check value. Give it a try. Let me know which works. 
$this->session->set_userdata('check',0); 
+0

是的!非常感谢 ! – mdck

+0

@jorisreix Gr8。快乐它可以帮助你。 :) – jagad89

1

你可以试试设置的值,然后分配一个新的值给它,像下面的代码:

$check= $this->session->userdata('check'); 

if(!empty($check)){ 
    $this->session->unset_userdata('check'); 
    $this->session->set_userdata('check', 0); 
} 
echo $this->session->userdata('check'); 

让我知道如果这样的作品!