2013-02-21 85 views
0

我首先在紙上繪製了此功能的邏輯,因此它在某種程度上說明了我要採用這種方法的原因。我創建了表單,表單在提交時調用控件類中的方法,然後發送到模型進行檢查。使用codeigniter創建登錄表單時的問題

我相信我的控制器中的邏輯是正確的,所以我認爲問題是模型類中的方法。

function validate() 
{ 
    $this->db->where('username', $this->input->post('username')); 
    $this->db->where('password', $this->input->post('password')); 
    $query = $this->db->get('membership'); 

    return $query; 
} 

我希望$查詢返回true或false,就像一個布爾值。相反,無論輸入的數據是否與數據庫中的數據匹配,或者其輸入數據是否完全錯誤,輸出都是正確的。以下是控制器類中的方法;

function validate_credentials() 
{  
    $this->form_validation->set_rules('username', 'username', 'required'); 
    $this->form_validation->set_rules('password', 'password', 'required'); 

    if ($this->form_validation->run() == FALSE) 
    { 
     $this->createAdminForm(); 
    } 
    else 
    { 
     $this->load->model('admin_Model'); 

     $query = $this->admin_Model->validate(); 

     if($query) 
     { 
      redirect('pages'); 
     } 
     else // incorrect username or password 
     { 
      $this->createAdminForm(); 
     } 
    } 
} 

回答

0

找到我自己的答案,改變了validate()方法來此

function validate() 
{ 
    $this->db->where('username', $this->input->post('username')); 
    $this->db->where('password', $this->input->post('password')); 
    $query = $this->db->get('membership'); 

    if($query->num_rows != 0) 
    { 
     $validate=true; 
     return $validate; 
    } 
} 
+0

代替'$驗證的=真正;返回$ validate',你可以簡單地說'return TRUE'。 – kubilayeksioglu 2013-02-22 10:15:05

1

我用不同的方式,我覺得是比較明確的:

public function login(){ 


     if($this->input->post('login')){ 

      $this->form_validation->set_rules('username', 'Username', 'required|callback_valid_login'); 
      $this->form_validation->set_rules('password', 'Password', 'required|callback_valid_password'); 

      if($this->form_validation->run($this)){ 
       $user = $this->user_model->get_by_field('username', $this->input->post('username')); 

       $this->session->set_userdata($user); 

       redirect("pages"); 
      } else { 
       $this->load->view('login_failed'); 
      } 
     } else 
      $this->load->view('login'); 
    }