Получение данных сеанса с условием на Codeigniter - PullRequest
0 голосов
/ 21 марта 2020

Я делаю сеанс входа в систему с одним условием, если Пользователь не найден в Таблице A, затем начинаю искать в Таблице B, вот код:

$EMP_NO = strtoupper($this->input->post('empcd'));
        $passwd = strtoupper($this->input->post('password'));

        $getUser = $this->db->query("SELECT EMP_NO, EN_NAME, UPPER(cryptit.decrypt(PASSWORD,EMP_NO)) PASSWORD2, MAILADDRESS FROM tkgw_user_information WHERE EMP_NO = '$EMP_NO'");

        if ($getUser->num_rows() == 1) {
            $user = $getUser->row();

            if ($passwd == $user->PASSWORD2) {

                $session_data = [
                    'iduser' => $user->EMP_NO,
                    'nama' => $user->EN_NAME,
                    'empcd' => $user->EMP_NO,
                    'email' => $user->MAILADDRESS,
                    'loginuser' => TRUE,
                ];

                $this->session->set_userdata($session_data);
                $this->session->set_flashdata('success', 'Welcome! ' . $user->EN_NAME);
                redirect(base_url('dashboard'));
            } else {
                $this->session->set_flashdata('error', 'Wrong Password!');
                redirect(base_url('sign-in'));  
            }

            } else {
                $findUser = $this->db->query("SELECT UPPER(EMP_NO), EN_NAME, UPPER(PASSWORD) PASSWORD2, MAILADDRESS FROM ITSJ_USER_ACCOUNT WHERE EMP_NO = '$EMP_NO'");
                if ($findUser->num_rows() == 1) {
                    $userx = $findUser->row();

                    if ($passwd == $userx->PASSWORD2) {

                        $session_data = [
                            'iduser' => $userx->EMP_NO,
                            'nama' => $userx->EN_NAME,
                            'empcd' => $userx->EMP_NO,
                            'email' => $userx->MAILADDRESS,
                            'loginuser' => TRUE,
                        ];
                        $this->session->set_userdata($session_data);
                        $this->session->set_flashdata('success', 'Welcome! ' . $userx->EN_NAME);
                        redirect(base_url('dashboard'));

                    } else {
                        $this->session->set_flashdata('error', 'Wrong Password!');
                        redirect(base_url('sign-in'));  
                    }
                }else{
                        $this->session->set_flashdata('error', 'User not avalable!');
                        redirect(base_url('sign-in'));
                }
            }
        }

С этим кодом я могу войти через Таблицу B, когда Пользователь не существует в Таблице A, но каждый раз, когда я переключаю страницу, он продолжает просить меня войти снова, кажется, что сеанс закончен или разрушен. Но если я войду через Таблицу A (первое условие), сессия останется нетронутой.

Не могли бы вы помочь мне найти решение, спасибо.

Редактировать:

проверка, зарегистрирован ли пользователь на каждой странице:

if ($this->session->userdata('iduser') == NULL) {
    $this->session->set_flashdata('Warning', 'Please Login First');
    redirect(base_url('sign-in'));
}

Ответы [ 2 ]

0 голосов
/ 23 марта 2020

Я обнаружил причину, из-за которой пользователь из таблицы 2 вышел из системы, когда он перенаправлял на другие страницы, когда я показываю all_userdata сессии Я заметил, что EMP_NO вернулся пустым, поэтому я удаляю ' UPPER 'часть из' UPPER (EMP_NO) 'во втором запросе, и теперь она работает.

спасибо всем за помощь.

0 голосов
/ 21 марта 2020

Попробуйте ниже код

Public function check_login($table_name){
    $EMP_NO = strtoupper($this->input->post('empcd'));
    $passwd = strtoupper($this->input->post('password'));
     return  $this->db->query("SELECT EMP_NO, EN_NAME, UPPER(cryptit.decrypt(PASSWORD,EMP_NO)) PASSWORD2, MAILADDRESS FROM ".$table_name." WHERE EMP_NO = '$EMP_NO'");

}
Public function login(){
    $table1 = "tkgw_user_information";
    $table2 = "ITSJ_USER_ACCOUNT";

    $result = $this->check_login($table1);
    if($result->num_rows()==0){
        $result = $this->check_login($table2);
        if($result->num_rows()==0){
             $this->session->set_flashdata('error', 'User not available!');
                redirect('sign-in'); 
        }
    }
    $user = $result->row();
    if ($passwd == $user->PASSWORD2) {
                $session_data = [
                    'iduser' => $user->EMP_NO,
                    'nama' => $user->EN_NAME,
                    'empcd' => $user->EMP_NO,
                    'email' => $user->MAILADDRESS,
                    'loginuser' => TRUE,
                ];
                $this->session->set_userdata($session_data);
                $this->session->set_flashdata('success', 'Welcome! ' . $user->EN_NAME);
                redirect('dashboard');
    }else{
         $this->session->set_flashdata('error', 'Wrong Password!');
        redirect('sign-in'); 
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...