所以这已经杀了我几个小时了。
我有一个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
}
}
有人可以解释发生了什么吗?
答案 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");
}