CodeIgniter中未更新会话值

时间:2015-07-17 16:38:25

标签: php codeigniter

我想知道我是否只是发现了一个错误,或者编程的时间可能不会让我看到明显的错误?

以下是我的代码示例:

class home extends CI_Controller
{
    public function __construct()
    {

    }

    public function edit()
    {
        // Prints: John
        print_r($this->session->userdata('name'));

        $this->load->view('home/edit');
    }

    public function ajax_edit()
    {
        $this->session->userdata('name', 'Obama');

        // Prints: Obama
        print_r($this->session->userdata('name'));
    }
}

我通过ajax调用函数ajax_edit,而印刷品是"奥巴马",这是正确的。之后,我刷新页面(到edit函数),name的输出是" John"。

为什么上帝的天堂不会更新会议的价值"奥巴马"?似乎在刷新之后它重置了一些东西并且回到旧的价值" John"。

1 个答案:

答案 0 :(得分:1)

问题是你没有使用正确的方法。

要为CI会话设置任何新信息,您需要使用set_userdata(),以便检索或检查您使用userdata("key")会话中的最新信息。

解决方案:重写您的ajax_edit()方法代码,如下所示:

public function ajax_edit() {
    $this->session->set_userdata('name', 'Obama');

    // Prints: Obama
    print_r($this->session->userdata('name'));
}

来源:http://www.codeigniter.com/user_guide/libraries/sessions.html#adding-session-data