2017-06-15 93 views
0

我是codeigniter中的新用户。我创建一个登录表单,我想验证我的登录凭据。我搜索了很多解决方案,但是失败了我无法验证我的凭据。用户验证在CodeIgniter中不起作用

这里是我的观点代号为login_form.php

<div id="login_form"> 
     <h1>Login Page..!!</h1> 
     <?php 
     echo form_open('login/validate_credentials'); 
     echo form_input('username', 'Username'); 
     echo form_password('password', 'Password'); 
     echo form_submit ('submit', 'Login'); 
     ?> 

    </div> 

这里是我的模型代号为users_model.php

<?php 
class Users_model extends CI_Model{ 

     function validate(){ 

       $this->db->where('username', $this->input->post('username')); 
       $this->db->where('password', $this->input->post('password')); 
       $query = $this->db->get('users'); 
if ($query->num_rows == 1){ 
        return true; 
        } 

      } 

    } ?> 

这是我的Controler代号为Login.php

<?php 

    class Login extends CI_Controller{ 

     function index(){ 
      $this->load->helper('url'); 
      $this->load->helper('html'); 
      $data['main_content'] = 'login_form'; 
      $this->load->view('include/template', $data); 
     } 

     function validate_credentials(){ 

      $this->load->model('users_model'); 
      $query = $this->users_model->validate(); 




      if($query){ 


       $data = array(
           'username'=> $this->input->post('username'), 
           'is_logged_in' => true 
       ); 

        $this->session->set_userdata($data); 
        redirect('site/dashboard'); 

      } 

      else{ 
       echo "Wrong"; 
       //$this->index(); 
      } 
     } 
    } 
?> 

甚至当我给它正确的用户名和密码,所以无法验证和回声“错误”,如在我的代码

+0

请删除验证字,我正在查找您在代码中写入验证的位置。您遇到查询未验证的问题。 – kishor10d

回答

1

num_rows()应该是一个方法

改变它:

function validate() 
    { 

      $this->db->where('username', $this->input->post('username')); 
      $this->db->where('password', $this->input->post('password')); 
      $query = $this->db->get('users'); 
      if ($query->num_rows() == 1){ 
       return true; 
       } 

    } 

https://www.codeigniter.com/user_guide/database/results.html#id4

+0

谢谢兄弟!你安全我的生活:) :) :) – sunny