Ich habe eine Tabelle "usuarios", die die folgenden Informationen enthält:Codeigniter Login-System Ausgabe loging
(id, Benutzername, Name, Nachname, Passwort, Typ, Status, Datum), nicht wahr?
Werfen Sie einen Blick:
Mein persönliches Ziel ist es, ein Login-System zu machen, die mir diejenigen, die ADMIN von denen, die nur einfache Benutzer clasify erlaubt ... Ich meine, wenn ein Zeile der Tabelle enthält Typ = 0 es ist ein ADMIN und wenn Typ = 1 ist es ein einfacher Benutzer. Also, in das Login-System, wenn ich zum Beispiel ADMIN 1234 schreibe und diese Daten entspricht einem ADMIN-Benutzer aus der Tabelle "Benutzer"; Wenn ich "Login" drücke, muss eine exklusive Seite nur für ADMINs geöffnet werden. Das selbe aber für diejenigen, die "einfache" Benutzer sind.
Das System muss validieren, wenn ich falsche Benutzernamen/Passwörter schreibe und der Benutzername einem aktiven Mitglied entspricht (Status = 1 aktiv, Status = 0 nicht aktiv). Keine leeren Felder während Login
Egal, was ich in „username“ und „password“ im Login-System schreiben .. wenn ich auf „Login“ klicken ich immer diese Meldung erhalten, und nichts geschieht:
Und das sind die in der Datenbank registrierte Benutzer:
Hier ist mein Code: Controller-Dateien (2 Dateien: "Armaturenbrett" und "Login") Dashboard:
<?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');
}
}
?>
Anmeldung:
<?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');
}
}
}
?>
Die Modelldatei (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];
}
}
}
?>
Und meiner Ansicht nach Dateien: login_formular:
<!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>]
weiß nicht, was jetzt tun:/
Die Verwendung einer Hash-Funktion (z. B. MD5) ist nicht ausreichend und nur das Hinzufügen eines Salzes trägt wenig zur Verbesserung der Sicherheit bei. Stattdessen iterieren Sie über einen HMAC mit einem zufälligen Salz für etwa 100ms und speichern Sie das Salz mit dem Hash. Verwenden Sie Funktionen wie 'PBKDF2',' Rfc2898DeriveBytes', 'password_hash' /' password_verify', 'BCrypt' und ähnliche Funktionen. Es geht darum, den Angreifer dazu zu bringen, viel Zeit mit der Suche nach Passwörtern zu verbringen. Mit PHP 'password_hash' /' password_verify' sind Sie sicher und einfach zu bedienen. – zaph
Ja, aber ich weiß nicht, was ist los mit meinem Programm Geck:/ –
Vielleicht ist es am besten funktioniert nicht, da es die Benutzer in Gefahr bringen würde. – zaph