php - Codeigniter登录系统问题日志记录

标签 php mysql codeigniter authentication

我得到了一个表“usuarios”,其中包含以下信息:

(ID、用户名、姓名、姓氏、密码、类型、状态、日期),对吗?

看一下:

enter image description here

我个人的目标是创建一个登录系统,使我能够将管理员与简单用户区分开来...我的意思是,如果表中的一行包含 type = 0,则它是管理员,如果type = 1 是一个简单用户。 因此,在登录系统中,如果我编写 ADMIN 1234,并且该数据对应于表“users”中的 ADMIN 用户;当我按“登录”时,它必须打开一个仅供管理员使用的专用页面。相同,但适用于那些“简单”用户。

系统必须验证我是否写了错误的用户名/密码以及用户名是否对应于活跃成员(状态 = 1 活跃,状态 = 0 不活跃)。登录时不能有空字段

无论我在登录系统中的“用户名”和“密码”中写入什么。当我单击“登录”时,我总是收到此消息,但什么也没有发生:

enter image description here

这些是在我的数据库中注册的用户:

enter image description here

这是我的代码: 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/

相关文章:

php - 如何连接每一行的输入并保存到数据库

php - codeigniter 表单验证和数组作为字段名称

php - 更改连接的数据库

php - 通过PHP获取数据库的列名

php - 无法包含文件并收到 "failed to open stream: No such file or directory"警告消息

php 日期格式返回 01-01-1970

php - 根据类别名称 woocommerce 检查购物车中的产品?

MySQL 查询只返回一行,因为其中有 SUM 函数

php - 在 PHP 中将 2 个不同表中的 1 列匹配在一起

mysql - Codeigniter mysql 查询组