codeigniter中的用户名和密码无效

时间:2016-12-10 10:05:02

标签: codeigniter login passwords username

我已经在codeigniter中创建了一个登录表单,但是当我使用用户的凭据登录时,我已经在数据库中注册了它(“用户名和密码无效”)。我正在努力解决这个问题,请帮帮我! 我的控制器如下:login.php

<?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');
           }
          }
        }
       }?>

我的模特: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();

     }

     }?>

我的观点: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>

4 个答案:

答案 0 :(得分:0)

在您的Controller文件中,您的类的名字必须是大写的,所以..

class Login extends CI_Controller

并保存您的Controller文件Login.php而不是login.php

答案 1 :(得分:0)

创建自己的身份验证系统正在重新发明轮子,浪费时间,而且不安全。 codeigniter 3有一个类可以很好地完成它。它的名字是ion auth。

http://benedmunds.com/ion_auth/

答案 2 :(得分:0)

get_user可能永远不会被调用!

“class login_model extends CI_Model”应为“class Login_model extends CI_Model”。这是一项要求:

  

其中Model_name是您的类的名称。班级名称必须具有   首字母大写,其余名称小写。使   确保你的类扩展了基础Model类。

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

答案 3 :(得分:0)

如果您没有创建视图或重定向到该视图所在的控制器,则登录404是正常的,请确保创建 user.php 视图

  

在用户控制器中使用

PUBLIC FUNCTION USER()
{
$THIS->LOAD->VIEW('USER VIEW HERE');
}