0

所以这已经让我死了好几个小时。

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

问题是这个..我得到了“假”的回报,尽管事情似乎有效。我的会话用户数据似乎设置正确。我建立了一个按钮,在页面上提醒它,它正在被设置。我注销并确认所有会话数据都已清除,然后重新登录并再次正确设置会话数据。但是“错误”/“会话数据问题”消息是返回给 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
    }
}

谁能解释发生了什么?

4

2 回答 2

1

set_userdata()总是返回NULL

我不知道你去哪里set_userdata()应该返回任何东西的想法。该文档没有提及返回值,并且代码本身被记录为@return void并且不包含return语句。

于 2013-01-21T23:43:43.613 回答
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");
}
于 2013-01-21T23:31:15.363 回答