我得到了一个表“usuarios”,其中包含以下信息:
(ID、用户名、姓名、姓氏、密码、类型、状态、日期),对吗?
看一下:
我个人的目标是创建一个登录系统,使我能够将管理员与简单用户区分开来...我的意思是,如果表中的一行包含 type = 0,则它是管理员,如果type = 1 是一个简单用户。 因此,在登录系统中,如果我编写 ADMIN 1234,并且该数据对应于表“users”中的 ADMIN 用户;当我按“登录”时,它必须打开一个仅供管理员使用的专用页面。相同,但适用于那些“简单”用户。
系统必须验证我是否写了错误的用户名/密码以及用户名是否对应于活跃成员(状态 = 1 活跃,状态 = 0 不活跃)。登录时不能有空字段
无论我在登录系统中的“用户名”和“密码”中写入什么。当我单击“登录”时,我总是收到此消息,但什么也没有发生:
这些是在我的数据库中注册的用户:
这是我的代码: Controller 文件(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];
}
}
}
?>
还有我的 View 文件: 登录表单:
<!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>
仪表板管理员:
Hi!<b><?php echo $user['nombre'];?></b>YOU ARE AN ADMINISTRATOR! > [<a href= '<?php echo base_url('dashboard/logout');?>'>LOGOUT</a>]
仪表板用户:
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/
关于php - Codeigniter登录系统问题日志记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43171291/