Я пытаюсь написать функцию, используя сессию. Когда пользователь уже входил в систему, он может напрямую go перейти на домашнюю страницу и не должен входить в систему. Если пользователь ранее не входил в систему, ему необходимо go, чтобы войти на страницу входа. Тем не менее, мой результат заключается в том, что независимо от того, верна ли информация для входа или нет, или если они уже вошли в систему, они всегда будут go на домашней странице.
public function login()
{
$this->load->database();
$this->load->model('scheduler_model');
$userinfos=$this->scheduler_model->get_users();
if(!$this->session->userdata('login_status')){
$this->load->view('login/loginform');
$username=$this->input->post("username");
$password=$this->input->post("password");
$infomatch=false;
foreach($userinfos as $userinfo){
if($username==$userinfo->username && $password==$userinfo->password){
$infomatch=true;
break;
}
}
if($infomatch){
$data['username']=$username;
$user_data = array(
'username'=>$username,
'login_status'=>true
);
$this->session->set_userdata($user_data);
redirect('home',$data);
//$this->input->set_cookie('123','abc','15');
// redirect('home');
}
elseif (!$username || !$password) {
echo "Type your username and password to login";
} else {
echo "Username or password is incorrect, please try again";
//$this->load->view('login/loginform');
}
} else {
//$this->session->setuserdata('username',$username);
redirect('home');
}
}
Результат означает, что что бы они ни делали, они всегда будут go выполнять следующую команду:
else {
//$this->session->setuserdata('username',$username);
redirect('home');
}
, если я раскомментирую //$this->session->setuserdata('username',$username);
, будет сообщение об ошибке «вызов неопределенного метода»