我有一张表“usuarios”,其中包含以下信息:
(id,用户名,姓名,姓氏,密码,类型,状态,日期),对吧?
看看:
我个人的目标是创建一个登录系统,允许我将那些WHO管理员与那些只是简单用户的人区分开来......我的意思是,如果表中的一行包含type = 0,那么它就是ADMIN,如果type = 1它是一个简单的用户。 因此,在登录系统中,如果我编写例如ADMIN 1234,并且此数据对应于表“users”中的ADMIN用户;当我按“登录”时,它必须只为ADMINs打开一个专属页面..同样但对于那些“简单”用户。
系统必须验证我是否写了错误的用户名/密码,以及用户名是否与活动成员相对应(状态= 1活动,状态= 0未激活)。登录时没有空字段
无论我在登录系统中使用“用户名”和“密码”写什么...当我点击“登录”时,我总是收到此消息并且没有任何反应:
这些是在我的数据库中注册的用户:
这是我的代码: 控制器文件(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>]
不知道现在该做什么:/
答案 0 :(得分:0)
您必须在模型中返回对象而不是对象数组,然后您的数据库上没有加密密码。
您可以使用tank_auth:https://konyukhov.com/soft/tank_auth/
答案 1 :(得分:0)
在此代码中,您加密密码。但是在db上,它没有用md5加密? 也许发送没有md5将解决你的问题。但我认为也可以用md5进行加密选择。
$cek=$this->m_login->cek_user($contrasena, $contrasena); // change like this.