Php Codeigniter登录系统问题登录
我得到了一个表“usuarios”,其中包含以下信息: (id、用户名、姓名、姓氏、密码、类型、状态、日期),对吗 看一看: 我的个人目标是建立一个登录系统,允许我将管理员和简单用户分类。。。我的意思是,如果表中的一行包含type=0,则它是管理员,如果type=1,则它是简单用户。 因此,在登录系统中,如果我写例如ADMIN 1234,并且该数据对应于表“users”中的ADMIN用户;当我按“登录”时,它必须只为管理员打开一个独占页面。。对于那些“简单”的用户来说也是如此 系统必须验证我是否写入了错误的用户名/密码,以及用户名是否对应于活动成员(状态=1活动,状态=0未活动)。登录时没有空字段 无论我在登录系统中的“用户名”和“密码”中写了什么。。当我点击“登录”时,我总是收到这条消息,但什么也没发生: 以下是在我的数据库中注册的用户: 这是我的密码: 控制器文件(2个文件:“仪表板”和“登录”) 仪表板:Php Codeigniter登录系统问题登录,php,mysql,codeigniter,login,Php,Mysql,Codeigniter,Login,我得到了一个表“usuarios”,其中包含以下信息: (id、用户名、姓名、姓氏、密码、类型、状态、日期),对吗 看一看: 我的个人目标是建立一个登录系统,允许我将管理员和简单用户分类。。。我的意思是,如果表中的一行包含type=0,则它是管理员,如果type=1,则它是简单用户。 因此,在登录系统中,如果我写例如ADMIN 1234,并且该数据对应于表“users”中的ADMIN用户;当我按“登录”时,它必须只为管理员打开一个独占页面。。对于那些“简单”的用户来说也是如此 系统必须验证我是
<?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
等函数和类似函数。关键是让攻击者花费大量时间通过暴力手段查找密码。使用PHPpassword\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.