我的会话无法正常工作

时间:2018-08-07 13:28:33

标签: php codeigniter session codeigniter-3 codeigniter-session

我有一个问题,即以下if条件总是进入第一个if条件,而从未进入elseif条件。

这是我的下面的代码:

if ($this->session->has_userdata('role') == 1) {
    $this->session->set_flashdata('success', 'Welcome ' . $userInfo[0]->name . '!');
    redirect('adashboard');    
} elseif ($this->session->has_userdata('role') == 2) {
    $this->session->set_flashdata('success', 'Welcome ' . $userInfo[0]->name . '!');
    redirect('udashboard');
}

你能告诉我为什么吗?

2 个答案:

答案 0 :(得分:0)

希望这对您有帮助:

使用userdata代替has_userdatauserdata返回指定项目键的值

if ($this->session->userdata('role') == 1) 
{
    $this->session->set_flashdata('success', 'Welcome ' . $userInfo[0]->name . '!');
    redirect('adashboard');    
} 
elseif ($this->session->userdata('role') == 2) 
{
    $this->session->set_flashdata('success', 'Welcome ' . $userInfo[0]->name . '!');
    redirect('udashboard');
}

更多信息:https://www.codeigniter.com/user_guide/libraries/sessions.html

答案 1 :(得分:0)

希望这对您有帮助

has_userdata()检查是否设置了给定的会话索引,并返回布尔值。

$this->session->has_userdata('role') ; 

此代码检查是否设置了角色。因此,在您的情况下,它返回true等于1。

根据您的情况,您需要使用userdata()而不是has_userdata()

$role=$this->session->userdata('role');
if ($role == 1) {
    $this->session->set_flashdata('success', 'Welcome ' . $userInfo[0]->name . '!');
    redirect('adashboard');    
} elseif ($role == 2) {
    $this->session->set_flashdata('success', 'Welcome ' . $userInfo[0]->name . '!');
    redirect('udashboard');
}