У меня проблема, что следующее 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_userdata
: userdata
возвращает значение указанного ключа элемента
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 () проверяет, задан ли данный индекс сеанса или нет, и возвращает возвращаемое значение.
$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');
}