PHP сеанс для функции входа не работает правильно - PullRequest
0 голосов
/ 26 апреля 2020

Я пытаюсь написать функцию, используя сессию. Когда пользователь уже входил в систему, он может напрямую 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);, будет сообщение об ошибке «вызов неопределенного метода»

Ответы [ 2 ]

1 голос
/ 26 апреля 2020

Возможно, вы забыли использовать подчеркивание, и вам нужно изменить закомментированную строку на:

$this->session->set_userdata('username',$username);
0 голосов
/ 27 апреля 2020

От вашего комментария вам нужно подтвердить сеанс входа пользователя в систему на странице надежды или других страницах, в зависимости от обстоятельств.

Вы можете использовать этот подход.

в ваших представлениях создайте файл с именем validation. php

вставьте этот код.

if (isset($this->session->userdata['username'])) {
   // you can set some variables as the case may be.     

    } else {
    header("location: login");
    }

затем go на свою домашнюю страницу и включите это.

include('validation.php);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...