2016-12-10 2 views
0

Ich habe ein Login-Formular in codeigniter erstellt, aber wenn ich mich mit den Benutzerdaten einloggen, die ich in der Datenbank registriert habe, schlägt es fehl ("Ungültiger Benutzername und Passwort"). Ich versuche dieses Problem zu lösen, bitte hilf mir! Mein Controller ist unter: login.phpUngültiger Benutzername und Passwort in codeigniter

<?php if (! defined('BASEPATH')) exit('No direct script access allowed'); 

class login extends CI_Controller 
{ 

public function __construct() 
{ 
     parent::__construct(); 
     $this->load->library('session'); 
     $this->load->helper('form'); 
     $this->load->helper('url'); 
     $this->load->helper('html'); 
     $this->load->database(); 
     $this->load->library('form_validation'); 
     //load the login model 
     $this->load->model('login_model'); 
    } 

    public function index() 
    { 
     //get the posted values 
     $username = $this->input->post("txt_username"); 
     $password = $this->input->post("txt_password"); 

     //set validations 
     $this->form_validation->set_rules("txt_username", "Username"); 
     $this->form_validation->set_rules("txt_password", "Password"); 

     if ($this->form_validation->run() == FALSE) 
     { 
      //validation fails 
      $this->load->view('login_view'); 
     } 
     else 
     { 
      //validation succeeds 
      if ($this->input->post('btn_login') == "Login") 
      { 
       //check if username and password is correct 
       $usr_result = $this->login_model->get_user($username,    
       $password); 
       if ($usr_result > 0) //active user record is present 
       { 
        //set the session variables 
        $sessiondata = array(
          'username' => $username, 
          'loginuser' => TRUE 
        ); 
        $this->session->set_userdata($sessiondata); 
        redirect("index"); 
       } 
       else 
       { 
        $this->session->set_flashdata('msg', '<div class="alert 

      alert-danger text-center">Invalid username and password!</div>'); 
        redirect('login/index'); 
       } 
      } 
      else 
      { 
       redirect('login/index'); 
      } 
      } 
     } 
     }?> 

Mein Modell: login_model.php

<?php if (! defined('BASEPATH')) exit('No direct script access allowed'); 

    class login_model extends CI_Model 
    { 
    function __construct() 
    { 
     // Call the Model constructor 
     parent::__construct(); 
    } 

    //get the username & password from tbl_usrs 
    function get_user($usr, $pwd) 
    { 
     $sql = "select * from tbl_users where username = '" . $usr . "' and 
     password = '" . md5($pwd) . "' and status = 'active'"; 
     $query = $this->db->query($sql); 
     //echo $sql; exit; 
     return $query->num_rows(); 

    } 

    }?> 

Meine Ansicht: login_view.php

<!DOCTYPE html> 
    <html> 
    <head> 
    <meta charset="utf-8"> 
<meta name="viewport" content="width=device-width, initial-scale=1.0"> 
<title>Login Form</title> 
<!--link the bootstrap css file--> 
<link   

href="//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css"  
rel="stylesheet"> 

    <style type="text/css"> 
    .colbox { 
     margin-left: 0px; 
     margin-right: 0px; 
    } 
    </style> 
    </head> 
    <body> 
    <div class="container" style="margin-top: 100px;"> 
    <div class="row"> 
     <div class="col-lg-6 col-sm-6"> 
      <h1>Welcome!</h1> 
     </div> 
     <div class="col-lg-6 col-sm-6">  
     <ul class="nav nav-pills pull-right" style="margin-top:20px"> 
       <li class="active"><a href="#">Login</a></li> 

      </ul> 
     </div> 
     </div> 
     </div> 
     <hr/> 

    <div class="container"> 
    <div class="row"> 
     <div class="col-lg-4 col-sm-4 well"> 
     <?php 
     $attributes = array("class" => "form-horizontal", "id" => "loginform",  

     "name" => "loginform"); 
     echo form_open("login/index", $attributes);?> 
     <fieldset> 
      <legend>Login</legend> 
      <div class="form-group"> 
      <div class="row colbox"> 
      <div class="col-lg-4 col-sm-4"> 
       <label for="txt_username" class="control- 
      label">Username</label> 
      </div> 
      <div class="col-lg-8 col-sm-8"> 
       <input class="form-control" id="txt_username" 
    name="txt_username" placeholder="Username" type="text" value="<?php echo  
    set_value('txt_username'); ?>" /> 
       <span class="text-danger"><?php echo 
    -form_error('txt_username'); ?></span> 
      </div> 
      </div> 
      </div> 

      <div class="form-group"> 
      <div class="row colbox"> 
      <div class="col-lg-4 col-sm-4"> 
      <label for="txt_password" class="control-label">Password</label> 
      </div> 
      <div class="col-lg-8 col-sm-8"> 
       <input class="form-control" id="txt_password" 
    name="txt_password" placeholder="Password" type="password" value="<?php 
    echo set_value('txt_password'); ?>" /> 
       <span class="text-danger"><?php echo  
    form_error('txt_password'); ?></span> 
      </div> 
      </div> 
      </div> 

      <div class="form-group"> 
      <div class="col-lg-12 col-sm-12 text-center"> 
       <input id="btn_login" name="btn_login" type="submit" 
      class="btn btn-default" value="Login" /> 
       <input id="btn_cancel" name="btn_cancel" type="reset" 
      class="btn btn-default" value="Cancel" /> 
      </div> 
      </div> 
     </fieldset> 
     <?php echo form_close(); ?> 
     <?php echo $this->session->flashdata('msg'); ?> 
     </div> 
     </div> 
     </div> 

    <!--load jQuery library--> 
    <script  

    src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"> 
    </script> 
    <!--load bootstrap.js--> 
    <script 
    src="//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"> 

    </script> 
    </body> 
    </html> 
+0

Hinweis: Sie müssen nicht die Controller und Modelle mit '>' https://www.codeigniter.com/user_guide/general/styleguide.html#php-closing- schließen? Tag – user4419336

+0

Und auch nicht MD5 für Passwörter sehr sehr unsicher verwenden stattdessen http://php.net/manual/en/function.password-hash.php und http://php.net/manual/en/function. password-verify.php – user4419336

+0

Danke 4 Vorschläge, findest du irgendeinen Fehler in meinem Code? Warum kann ich mich nicht anmelden? @ wolfgang1983 –

Antwort

0

in Ihrem Controller-Datei den Vornamen Ihre Klasse muss so groß sein.

class Login extends CI_Controller 

Und die Controller-Datei Login.php nicht login.php

+0

Klassennamenskonflikte treten nur in Codeigniter-Version 3.X auf. Außerdem wird beim Ausführen auf dem lokalen Computer kein Fehler ausgegeben. –

+0

'$ usr_result> 0' ist kein Fehler, Er gibt die Anzahl der Zeilen zurück, so dass es nicht nötig ist,' count() '' –

+0

Danke, jetzt nächste Seite nach Login ist 404 Fehlerseite. Ich habe noch keine Benutzerseite erstellt, ist dieser Fehler normal? @Hikmat Sijapati –

0

Erstellen eines eigenes Authentifizierungssystem, das Rad neu zu erfinden, eine Verschwendung von Zeit sparen, und es ist unsicher. Es gibt eine Klasse für Codeigniter 3, die das sehr gut macht. Sein Name ist ion auth.

http://benedmunds.com/ion_auth/

0

get_user wahrscheinlich nie aufgerufen wird!

"Klasse Login_Model erweitert CI_Model" sollte "Klasse Login_Model erweitert CI_Model" sein. Dies ist eine Voraussetzung:

Dabei ist Model_name der Name Ihrer Klasse. Klassennamen müssen den ersten Buchstaben haben, großgeschrieben mit dem Rest des Namens Kleinbuchstaben. Machen Sie sicher, dass Ihre Klasse die Basismodellklasse erweitert.

https://www.codeigniter.com/userguide3/general/models.html

Verwandte Themen