2014-03-01 71 views
0

型號:如果其他人不工作

控制器

function validate_credentials() 
    { 
    $this->load->model('membership_model'); 

     if($this->membership_model->validate()) 
     { 
     $this->db->where('username',$this->input->post('username')); 
     $get_profile_info = $this->db->get('memberships'); 
     if($get_profile_info->num_rows() > 0){ 
      foreach ($get_profile_info->result() as $row) 
     { 
      $info = array('firstname' => $row->firstname, 
          'lastname' => $row->lastname, 
          'email_address' => $row->email_address 
          ); 
     } 
      $data = array( 
       'username' => $this->input->post('username'), 
       'password' => $this->input->post('password'), 
       'firstname' => $info['firstname'], 
       'lastname' => $info['lastname'], 
       'email_address' => $info['email_address'], 
       'is_logged_in' => true 
       ); 
      $this->session->set_userdata($data); 
      redirect('/site/main_menu'); 
     }} 
     else if($this->membership_model->validate_admin()) 
     { 
      echo "admin"; 
     } 
     else 
     { 
      redirect('login'); 
     } 
    } 

的的if else if語句不能正常工作。程序測試第一個條件,如果它返回false,則跳過第二個條件,即使這是TRUE並執行else語句。我不確定這裏會發生什麼。

+1

嘗試每個驗證var_dump沒有任何如果看到你得到TRUE並使'else if'到'elseif' – Minhaz

回答

0
  • 將您的一個控制器方法重構爲不同的方法 - 一個用於成員,一個用於Admin啓動。而且因爲你正在調用單獨的數據庫表,所以建議每個表都有一個單獨的模型。
  • 因爲您正在與數據庫表進行交互,所以應該在模型(而不是控制器)中獲取配置文件信息。
  • 這是個人偏好,但我會在模型中設置會話數據。此外,您的foreach可能存在問題,然後獲取$ info ['first name']的值。
  • 在發送到數據庫之前首先驗證表單數據。它更安全,更適合您的用戶 - 如果他們忘記輸入密碼,您希望再次向他們顯示有用的消息。 http://ellislab.com/codeigniter/user-guide/libraries/form_validation.html

並記住有疑問時 - 回顯出來。