我的会话无法正常工作

My session doesnot work properly

我有问题,下面的 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');
}

你能告诉我为什么吗?

希望对您有所帮助:

使用userdata代替has_userdatauserdatareturns指定项key的值

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

希望对您有所帮助

has_userdata() 检查是否设置了给定的会话索引及其 return 布尔值。

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

此代码检查是否设置了角色。所以在你的情况下它 returns 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');
}