2016-10-06 10 views
-1

私は、「admin」と「user」の2つの役割を持つログインシステムを作っています。ログインのelse ifステートメントを作成しようとしました。これはユーザーログインのため、実際にはすべてのユーザーが今すぐadmin_viewに行くようになりました。Codeigniter adminとuser role

私のデータベースでは、ローは 'admin'と呼ばれ、ブール値であるため、カラム 'admin'がusersテーブルで1の場合です。値が0の場合は、user_viewをロードする必要があるため、admin_viewをロードする必要があります。

私は本当に今何をすべきか分かりません。

管理者とユーザーの役割をどのように分ける必要がありますか?

は、ここに私のコントローラです:users.phpここ

public function login() { 
    $this->form_validation->set_rules('username', 'Username', 'trim|required|min_length[3]'); 
    $this->form_validation->set_rules('password', 'Password', 'trim|required|min_length[3]'); 
    $this->form_validation->set_rules('confirm_password', 'Confirm Password', 'trim|required|min_length[3]|matches[password]'); 

    if ($this->form_validation->run() == FALSE) { 
     $data = array(
      'errors' => validation_errors() 
      ); 

     $this->session->set_flashdata($data); 

     redirect('home'); 
    } else { 
     $username = $this->input->post('username'); 
     $password = $this->input->post('password'); 
     $user_id = $this->user_model->login_user($username, $password); 

     if($user_id) { 
      $user_data = array(
       'user_id' => $user_id, 
       'username' => $username, 
       'logged_in' => true 
       'admin' => 1; 
       ); 

      $this->session->set_userdata($user_data); 
      $this->session->set_flashdata('login_success', 'You are now logged in'); 
      $data['main_view'] = "admin_view"; 
      $this->load->view('layouts/main', $data); 

     } 
     // Here I want the user_view to load op if the user haa a 0 value in 
in the column admin. 
     else if($user_id) { 
      $user_data = array(
       'user_id' => $user_id, 
       'username' => $username, 
       'logged_in' => true, 
       'admin'  => 0; 
       ); 

      $this->session->set_userdata($user_data); 
      $this->session->set_flashdata('login_success', 'You are now logged in'); 
      $data['main_view'] = "user_view"; 
      $this->load->view('layouts/main', $data); 

     } else { 
      $this->session->set_flashdata('login_failed', 'Sorry, you are not logged in'); 
      redirect('home/index'); 
     } 
    } 
} 

私のモデルは次のとおりです。

public function login_user($username, $password) { 
    $this->db->where('username', $username); 
    $result = $this->db->get('users'); 
    $db_password = $result->row(2)->password; 
    $admin = $result->row(7)->admin; 

    if(password_verify($password, $db_password)) { 
     return $result->row(0)->id; 
    } else { 
     return false; 
    } 

} 
} 

user_model.php私は助けをapperciate。

+0

? –

答えて

0

最初に、あなたのアレイにタイプミスがあり、最後のものが;で終わってはいけません。

user_modelには、IDを返す代わりに、いくつかの情報が返されます。

例:次に

return $result->row(0); 

、あなたが戻ってあなたのコントローラに行くとき、あなたはそこから

$data = $this->user_model->login_user($username, $password); 

array(
    'user_id' => $data->id, 
    'username' => $username, 
    'logged_in' => true, 
    'admin'  => $data->admin 
); 

を行うことができ、あなたはadmin01であるかどうか、セッションデータをチェックインできます。

次に、あなたが行うことができます: `出力をlogin_user`何

if ($admin == 0) { 
    //send to wherever 
} else { 
    //send some place else 
} 
+0

それは私のユーザーを0として読み込むだけで動作していませんが、私はそのユーザーのために1つの 'admin'カラムを設定しましたが、今は0をキャッチしています。 – CodeboyCap

関連する問題