2015-04-18 3 views
1

У меня есть форма входа в систему, и он работает, но я должен добавить условие, если пользователь активен или нет. Если он неактивен, перенаправите его на страницу show_error. Я использую CodeIgniter. вот моя модель: я пробовал эту функцию «is_active_user», но она не работает.Как проверить, активен ли пользователь, а затем выйти из системы

public function login() 
 
    { 
 
     $this->db->select('*'); 
 
     $this->db->from('users');  
 
     $this->db->where('username', $this->input->post('username')); 
 
     $this->db->where('password',sha1($this->input->post('password'))); 
 
     $result=$this->db->get(); 
 
      return $result->row_array();    
 
    } 
 
    public function is_active_user() { 
 
     $this->db->select('*'); 
 
     $this->db->from('users');   
 
     $this->db->where('username', $this->input->post('username')); 
 
     $this->db->where('deactivated_at = "0000-00-00 00:00:00" || deactivated_at IS NULL '); 
 
     $result=$this->db->get(); 
 
      
 
      if($result->num_rows() > 0) 
 
      { 
 
       return $result->row_array(); 
 
       
 
      } 
 
      return false; 
 
       
 
    }

Мой контроллер:

public function login() 
 
    { 
 
      
 
     $this->load->model('user_model'); 
 
     $user=$this->user_model->login(); 
 
     
 
     $is_active=$this->user_model->is_active_user(); 
 
$this->form_validation->set_rules('username', 'Потребителско име', 'trim|required|callback_login_check'); 
 
     $this->form_validation->set_rules('password', 'Парола', 'trim|required'); 
 

 
     if ($this->form_validation->run()==FALSE) 
 
     { 
 

 
      $this->index(); 
 
     } 
 
     else 
 
     { 
 
      if(count($user) > 0 && count($is_active) > 0)  
 
      { 
 
       $this->load->library('session'); 
 
      
 
       $data = array(
 
        'username' => $user['username'], 
 
        'user_id' => $user['user_id'], 
 
        'is_logged_in' => TRUE, 
 
        'role_id' => $user['role_id'] 
 
       
 
       ); 
 
       $this->session->set_userdata($data);   
 
      
 
      } 
 
     } 
 
    }

Как проверить, если пользователь активен или нет?

Но никакого результата. Теперь я попытался с:

public function login() 
 
    { 
 

 
     $this->db->select('*'); 
 
     $this->db->from('users');  
 
     $this->db->where('username', $this->input->post('username')); 
 
     $this->db->where('password',sha1($this->input->post('password'))); 
 
     $this->db->where('deactivated_at = "0000-00-00 00:00:00" OR deactivated_at IS NULL'); 
 
     
 
     $result=$this->db->get(); 
 
      return $result->row_array();    
 
    }

Но он записывает меня с другим профилем, а не этот профиль с именем пользователя и пароль, которые я залили.

ответ

1
public function login() 
{ 
    $this->db->select('*'); 
    $this->db->from('users');  
    $this->db->where('username', $this->input->post('username')); 
    $this->db->where('password',sha1($this->input->post('password'))); 
    $this->db->where('deactivated_at <> "0000-00-00 00:00:00"'); 
    $this->db->where('deactivated_at IS NOT NULL'); 
    $result=$this->db->get(); 
    return $result->row_array();    
} 
+0

Спасибо, Лучше в этой функции, а не писать другое. :) –

+0

Нет проблем. Я рад, что смогу помочь. – Tpojka

+0

Я отредактировал мой вопрос, я не знаю, почему, когда я использую этот код, я вхожу в систему с другим профилем, а не с этим именем пользователя и паролем, который я набрал. –

Смежные вопросы