Я получил таблицу «usuarios», которая содержит следующую информацию:
(id, имя пользователя, имя, фамилия, пароль, тип, статус, дата), правильно?
Взглянуть:
Моя личная цель – сделать систему входа в систему, которая позволяет мне объединять тех, кто ВОЗ является ADMIN, от тех, кто является просто простыми пользователями … Я имею в виду, если строка таблицы содержит тип = 0, это ADMIN, и если type = 1 это простой пользователь. Итак, в системе входа в систему, если я пишу, например, ADMIN 1234, и эти данные соответствуют пользователю ADMIN из таблицы «пользователи»; когда я нажимаю «login», он должен открыть эксклюзивную страницу только для ADMIN .. То же самое, но для тех, кто является «простыми» пользователями.
Система должна проверять, если я пишу неправильные имена пользователей / пароли, и если имя пользователя соответствует активному члену (статус = 1 активен, статус = 0 не активен). Нет пустых полей при входе в систему
Независимо от того, что я пишу в «username» и «password» в системе входа в систему. Когда я нажимаю «login», я всегда получаю это сообщение, и ничего не происходит:
И это пользователи, зарегистрированные в моей базе данных:
Вот мой код: файлы контроллеров (2 файла: «панель мониторинга» и «логин»). Панель инструментов:
<?php Class dashboard extends CI_Controller{ public function __construct(){ parent::__construct(); $this->load->model('m_login'); $this->auth->cek_auth(); } public function index(){ $ambil_akun = $this->m_login->ambil_user($this->session->userdata('usuario')); $data = array( 'user' =>$ambil_akun, ); $stat = $this->session->userdata('lvl'); if($stat=='s_admin'){ $this->load->view('dashboard_admin', $data); }else{ $this->load->view('dashboard_user', $data); } } public function login(){ $session = $this->session->userdata('isLogin'); if($session == FALSE) { $this->load->view('login_form'); }else { redirect('dashboard'); } } public function logout(){ $this->session->sess_destroy(); redirect('login', 'refresh'); } } ?>
Авторизоваться:
<?php Class Login extends CI_Controller{ public function __construct(){ parent::__construct(); $this->load->model("m_login"); } public function index(){ $session = $this->session->userdata('isLogin'); if($session == FALSE) { $this->load->view('login_form'); }else { redirect('dashboard'); } } public function do_login() { $usuario=$this->input->post('uname'); $contrasena=$this->input->post('pass'); $cek=$this->m_login->cek_user($contrasena, md5($contrasena)); if(count($cek) == 1){ foreach ($cek as $cek) { $tipo=$cek['tipo']; $estado=$cek['estado']; $nombre=$cek['nombre']; } if($estado =='0'){ $this->session->set_userdata(array( 'isLogin'=>TRUE, 'uname'=>$usuario, 'lvl'=>$tipo, 'estado'=>$estado )); redirect('dashboard', 'refresh'); } else{ echo "<script>alert('YOUR ACCOUNT IS NOT ACTIVE')</script>"; redirect('login','refresh'); } }else{ echo "<script>alert('USERNAME OR PASSWORD INVALID!')</script>"; redirect('login','refresh'); } } } ?>
Файл модели (m_login):
<?php class m_login extends CI_Model{ public function __construct(){ parent::__construct(); $this->tbl="usuarios"; } public function cek_user($usuario="", $contrasena="") { $query=$this->db->get_where($this->tbl, array('usuario'=>$usuario, 'contrasena'=>$contrasena)); $query=$query->result_array(); return $query; } public function ambil_user($nombre) { $query=$this->db->get_where($this->tbl, array('nombre'=> $nombre)); $query=$query->result_array(); if(query){ return $query[0]; } } } ?>
И мои файлы просмотра: login_form:
<!DOCTYPE html> <html lang=""> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1"> <link rel="stylesheet" href="https://netdna.bootstrapcdn.com/bootstrap/3.0.3/css/bootstrap.min.css"> <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js"></script> </head> <body> <div class="container"> <h3>Login</h3> <hr> <form action="<?php echo base_url('login/do_login')?>" method="POST"> <div class="form-group"> <label for="cari">USERNAME</label> <input type="text" name="usuario" id="usuario" class="form-control"><?php echo form_error('usuario');?> </div> <div class="form-group"> <label for="cari">PASSWORD</label> <input type="password" name="contrasena" id="contrasena" class="form-control"><?php echo form_error('contrasena');?> </div> <input class="btn btn-primary" type="submit" value="Login"> <input class="btn btn-primary" type="reset" value="Reset"> </form> </div> </body> </html>
dashboard_admin:
Hi!<b><?php echo $user['nombre'];?></b>YOU ARE AN ADMINISTRATOR! > [<a href= '<?php echo base_url('dashboard/logout');?>'>LOGOUT</a>]
dashboard_user:
Hi!<b><?php echo $user['nombre'];?></b>YOU ARE A SIMPLE USER! > [<a href= '<?php echo base_url('dashboard/logout');?>'>LOGOUT</a>]
Не знаю, что делать сейчас: /
Вы должны вернуть объект вместо массива объектов в свою модель, тогда у вас нет зашифрованного пароля в вашей базе данных.
Вы можете использовать tank_auth: https://konyukhov.com/soft/tank_auth/
в этом коде вы шифруете пароль. Но на db его не зашифровано с md5? Возможно, отправка без md5 решит вашу проблему на данный момент. Но я думаю, что также зашифровать с хорошим выбором md5.
$cek=$this->m_login->cek_user($contrasena, $contrasena); // change like this.