в ci я хочу войти в систему 3 разных учетных записи роли usr, присутствующих в 3 разных таблицах db моего db namd как m_admin ,, m_faculty, m_supervisior - PullRequest
0 голосов
/ 28 мая 2020

в воспламенителе кода я хочу войти в систему 3 разных пользователей с разными ролями с одной страницы входа, чьи имя пользователя и пароли представлены в другой таблице базы данных с использованием «if elseif & else» в моем контроллере, я думаю, что если проверка формы верна, чем она будет go, если и когда, если не правильно, он будет go в elseif, и если он не сработает, он будет go до третьего, то есть m_faculty, и если он также не работает, он покажет предупреждение, что вы вставили неправильный идентификатор и пароль, если еще я могу перенаправить на go на "faculty / m_dashboard", только это моя панель управления факультета, другие перенаправления не работают, когда я знаю, почему он не работает, или какой-либо лучший способ сделать это. ......... ?????

public function Auth()
{
    $rules = array(
        array('field' => 'username', 'label' => 'Username', 'rules' => 'required'),
        array('field' => 'password', 'label' => 'Password', 'rules' => 'required'),
    );

    $this->form_validation->set_rules($rules);
    if ($this->form_validation->run() == false) {
        $Msg = array('Msg' => validation_errors(), 'Type' => 'danger');
        $this->session->set_flashdata($Msg);
        redirect(base_url() . 'Admin/');
    }

    # faculty dashboard dashboard


    elseif ($this->form_validation->run() == true) 
    {
        $username = $this->lib->validate($this->input->post('username'));
        $password = $this->lib->validate($this->input->post('password'));

        $username = $this->security->xss_clean($username);
        $password = $this->security->xss_clean($password);          
        $count = $this->lib_model->Counter('m_faculty', array('username' => $username, 'password' => $password, 'status' => 0));

        if ($count == 1) {
            $Sessions = array(
                'EmpCode' => $username,
                'EmpName' => 'Administration',
                'ELogin' => true);
            $this->session->set_userdata($Sessions);

            $Msg = array('Msg' => ' Have a Nice Day ', 'Type' => 'success');
            $this->session->set_flashdata($Msg);
            redirect(base_url() . 'Faculty/f_dashboard');


        }
    }

    #supervisior dashboard

    elseif ($this->form_validation->run() == true) 
    {    

        $username = $this->lib->validate($this->input->post('username'));
        $password = $this->lib->validate($this->input->post('password'));

        $username = $this->security->xss_clean($username);
        $password = $this->security->xss_clean($password);          
        $count = $this->lib_model->Counter('m_supervisior', array('username' => $username, 'password' => $password, 'status' => 0));            

        if ($count == 1) {
            $Sessions = array(
                'EmpCode' => $username,
                'EmpName' => 'Administration',
                'ELogin' => true);
            $this->session->set_userdata($Sessions);

            $Msg = array('Msg' => ' Have a Nice Day ', 'Type' => 'success');
            $this->session->set_flashdata($Msg);
            redirect(base_url() . 'Supervisior/supervisior_dashboard');
        }
   }

    #admin dashboard


    elseif ($this->form_validation->run() == true)  
    {
        $username = $this->lib->validate($this->input->post('username'));
        $password = $this->lib->validate($this->input->post('password'));

        $username = $this->security->xss_clean($username);
        $password = $this->security->xss_clean($password);          
        $count = $this->lib_model->Counter('m_admin', array('username' => $username, 'password' => $password, 'status' => 0));          

        if ($count == 1) {
            $Sessions = array(
                'EmpCode' => $username,
                'EmpName' => 'Administration',
                'ELogin' => true);
            $this->session->set_userdata($Sessions);

            $Msg = array('Msg' => ' Have a Nice Day ', 'Type' => 'success');
            $this->session->set_flashdata($Msg);
            redirect(base_url() . 'Admin/dashboard');
        } 
    }

#error msg

    else {
        $Msg = array('Msg' => 'Username and Password Invalid', 'Type' => 'danger');
        $this->session->set_flashdata($Msg);
        redirect(base_url() . 'Admin/');
    }

}

1 Ответ

0 голосов
/ 29 мая 2020

ваш код не будет работать, потому что после первой проверки он всегда будет застревать в вашем первом предложении else.

Я не уверен, что именно вы здесь делаете, но возможный подход будет

public function Auth()
{

    try
    {
        $rules = array(
            array('field' => 'username', 'label' => 'Username', 'rules' => 'required'),
            array('field' => 'password', 'label' => 'Password', 'rules' => 'required'),
        );
        $this->form_validation->set_rules($rules);
        if (!$this->form_validation->run()) throw new Exception(validation_errors());

        $username = $this->lib->validate($this->input->post('username'));
        $password = $this->lib->validate($this->input->post('password'));

        $arrAuthenticationTypes = [
            [
                'table' => 'm_faculty',
                'view' => 'Faculty/f_dashboard'
            ],
            [
                'table' => 'm_supervisior',
                'view' => 'Supervisior/supervisior_dashboard'
            ],
            [
                'table' => 'm_admin',
                'view' => 'Admin/dashboard'
            ],
        ];

        foreach($arrAuthenticationTypes AS $arrAuthenticationType)
        {
            $count = $this->lib_model->Counter($arrAuthenticationType['table'], array('username' => $username, 'password' => $password, 'status' => 0));
            if ($count == 1)
            {
                $Sessions = array(
                    'EmpCode' => $username,
                    'EmpName' => 'Administration',
                    'ELogin' => true
                );
                $this->session->set_userdata($Sessions);
                $Msg = array('Msg' => ' Have a Nice Day ', 'Type' => 'success');
                $this->session->set_flashdata($Msg);
                redirect(base_url() . $arrAuthenticationType['view']);
            }
        }

        throw new Exception('Username and Password Invalid');
    }
    catch(\Exception $e)
    {
        $arrMessage = [
            'Msg' => $e->getMessage(),
            'Type' => 'danger'
        ];
        $this->session->set_flashdata($Msg);
        redirect(base_url() . 'Admin/');
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...