Php Codeigniter登录系统问题登录

Php Codeigniter登录系统问题登录,php,mysql,codeigniter,login,Php,Mysql,Codeigniter,Login,我得到了一个表“usuarios”,其中包含以下信息: (id、用户名、姓名、姓氏、密码、类型、状态、日期),对吗 看一看: 我的个人目标是建立一个登录系统,允许我将管理员和简单用户分类。。。我的意思是,如果表中的一行包含type=0,则它是管理员,如果type=1,则它是简单用户。 因此,在登录系统中,如果我写例如ADMIN 1234,并且该数据对应于表“users”中的ADMIN用户;当我按“登录”时,它必须只为管理员打开一个独占页面。。对于那些“简单”的用户来说也是如此 系统必须验证我是

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

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

看一看:

我的个人目标是建立一个登录系统,允许我将管理员和简单用户分类。。。我的意思是,如果表中的一行包含type=0,则它是管理员,如果type=1,则它是简单用户。 因此,在登录系统中,如果我写例如ADMIN 1234,并且该数据对应于表“users”中的ADMIN用户;当我按“登录”时,它必须只为管理员打开一个独占页面。。对于那些“简单”的用户来说也是如此

系统必须验证我是否写入了错误的用户名/密码,以及用户名是否对应于活动成员(状态=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');

                }



}

}

?>

您必须在模型中返回一个对象而不是对象数组,这样您的数据库中就没有加密密码了


您可以使用tank_auth:

在这段代码中,您需要加密密码。但是在db上,它不是用md5加密的吗? 也许现在不使用md5发送将解决您的问题。但我认为用md5加密也是不错的选择

$cek=$this->m_login->cek_user($contrasena, $contrasena); // change like this.

仅仅使用散列函数(例如:MD5)是不够的,仅仅添加一个salt对提高安全性几乎没有作用。取而代之的是,在HMAC上随机添加盐,持续约100毫秒,并将盐与散列一起保存。使用诸如
PBKDF2
Rfc2898DeriveBytes
密码散列
/
密码验证
Bcrypt
等函数和类似函数。关键是让攻击者花费大量时间通过暴力手段查找密码。使用PHP
password\u hash
/
password\u verify
是安全且易于使用的。是的,但我不知道我的程序有什么问题,dude:/也许最好不要运行,因为它会让用户面临风险。
    <!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>]
$cek=$this->m_login->cek_user($contrasena, $contrasena); // change like this.