任何人都可以告诉我为什么这个Codeigniter会话数据功能似乎工作..但返回false?

时间:2013-01-21 23:18:39

标签: php codeigniter

所以这已经杀了我几个小时了。

我有一个ajax方法,可以在用户登录时设置sessiondata。我通过jQuery发送一些变量,然后输出一条消息(也可以是" true" / " false"),当我回到$ .post时我会发出警告。

问题是这个......我得到了" false"回来了,虽然事情似乎有效。我的会话用户数据确实似乎设置正确。我制作了一个按钮,可以在页面上提醒它, 正在设置。我注销并确认所有会话数据都已清除,然后重新登录并再次正确设置会话数据。但是"虚假" /"问题与会话数据"消息是回到jQuery并且每次都被提醒的消息。

public function setUserSessionData(){
    $picture    = $this->input->post('picture', TRUE);
    $email      = $this->input->post('email', TRUE);
    $first_name = $this->input->post('first_name', TRUE);
    $id         = $this->input->post('id', TRUE);

    ChromePhp::log($picture.$email.$first_name.$id);  // all values good

    $newData = array(
        'loggedInStatus' => 'TRUE',
        'picture'        => $picture,
        'first_name'     => $first_name,
        'id'             => $id,
        'email'          => $email
    );

            // userdata is setting correctly
    if($this->session->set_userdata($newData))
    {
        echo("Session data set"); 
    }
    else
    {
        echo("PROBLEM WITH SESSION DATA"); // this is the message that is outputting
    }
}

有人可以解释发生了什么吗?

2 个答案:

答案 0 :(得分:1)

set_userdata()始终返回NULL

我不知道你在哪里认为set_userdata()应该返回任何东西。 documentation未提及返回值,code itself记录为@return void且不包含return语句。

答案 1 :(得分:0)

你能不能只使用那个会话数组中的密钥?

$newData = array(
    'loggedInStatus' => TRUE,

// ...

$this->session->set_userdata($newData);

if($this->session->userdata('loggedInStatus') === TRUE){ 
    echo("Session data set"); 
}else{
    echo("PROBLEM WITH SESSION DATA");
}