2

我有一个问题,即以下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');
}

你能告诉我为什么吗?

4

2 回答 2

0

希望对你有帮助

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

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

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

在您的情况下,您需要使用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');
}
于 2018-08-08T15:59:56.530 回答
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

于 2018-08-07T13:54:01.167 回答