2017-04-02 14 views
0

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:

enter image description here

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:

enter image description here

Und das sind die in der Datenbank registrierte Benutzer:

enter image description here

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:/

+0

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

+0

Ja, aber ich weiß nicht, was ist los mit meinem Programm Geck:/ –

+0

Vielleicht ist es am besten funktioniert nicht, da es die Benutzer in Gefahr bringen würde. – zaph

Antwort

0

in diesem Code verschlüsseln Sie Ihr Passwort ein. Aber auf db, ist es nicht mit MD5 verschlüsselt? Vielleicht sendet das Senden ohne MD5 Ihr Problem für jetzt. Aber ich denke auch verschlüsseln mit MD5 gute Auswahl.

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

Ich habe versucht, das zu tun, aber ich habe den gleichen Fehler: / –