2016-09-30 11 views
0

CodeIgniterでログインシステムを作成したいと思います。 私は私のコントローラでこれを持っている:CIントで管理セッションを作成する

public function user_login_process() 
{ 

    $data = array(
     'username' => $this->input->post('username'), 
     'password' => $this->input->post('password') 
    ); 
    $result = $this->login_database->login($data); 
    if ($result == TRUE) { 

     $username = $this->input->post('username'); 
     $result = $this->login_database->read_user_information($username); 
     if ($result != false) { 
      $session_data = array(
       'username' => $result[0]->username, 
       'email' => $result[0]->email, 
      ); 
      $this->session->set_userdata('logged_in', $session_data); 
      if (isset($this->session->userdata['logged_in'])) { 
       if($username="admin"){ 
        $result1 = $this->login_database->read_admin_information($username); 
        if ($result1 != false) { 
         $session_data = array(
          'username' => $result1[0]->username, 

         ); 
         $this->session->set_userdata('admin', $session_data); 
         $this->load->view('admin_page'); 
}}} 
      else { 
       $this->load->view('home_page'); 

      }} 
    } else { 
     $data = array(
      'error_message' => 'Invalid Username or Password' 
     ); 
     $this->load->view('login_form', $data); 
    } 
    //} 

私は私のモデルでこれを持っている:

public function login($data) { 

     $condition = "username =" . "'" . $data['username'] . "' AND " . "password =" . "'" . $data['password'] . "'"; 
     $this->db->select('*'); 
     $this->db->from('user'); 
     $this->db->where($condition); 
     $this->db->limit(1); 
     $query = $this->db->get(); 

     if ($query->num_rows() == 1) { 
      return true; 
     } else { 
      return false; 
     } 
    } 

// Read data from database to show data in admin page 
    public function read_user_information($username) {//Will read the data for loginn 

     $condition = "username =" . "'" . $username . "'"; 
     $this->db->select('*'); 
     $this->db->from('user'); 
     $this->db->where($condition); 
     $this->db->limit(1); 
     $query = $this->db->get(); 

     if ($query->num_rows() == 1) { 
      return $query->result(); 
     } else { 
      return false; 
     } 
    } 
    public function read_admin_information($username) {//Will read the data for loginn 

     $condition = "username =" . "'" . $username . "'"; 
     $this->db->select('*'); 
     $this->db->from('user'); 
     $this->db->where($condition); 
     $this->db->limit(1); 
     $query = $this->db->get(); 

     if ($query->num_rows() == 1) { 
      return $query->result(); 
     } else { 
      return false; 
     } 
    } 

だから私はそれが正常であるか、管理者である場合には、ユーザーを区別し、セッションを作成しようとしています(ユーザ名= admin)。問題は、私が管理者のようにログインした後、これは常に管理ページに私を連れて行くことです。それは何をすべきですか:ユーザがadminではなくログインしている場合は、home_pageに移動します。

何か問題がありましたか?私はこれを行う前にCIのセッションクラスを読んだ。誰かがこれを正しい方法でやるのを助けることができますか?ありがとう!あなたがここに割り当てる、比較されていない

+0

解決策を確認しましたか? – devpro

答えて

1

if($username="admin"){ // will assign 'admin' to $username 

は次のようになります。

if($username=="admin"){ // will compare $username == 'admin' 
+0

adminのページが機能するようになりましたが、通常の場合、home_pageビューでない空白のページに移動します – Daniel

+0

@Daniel:php 'error_reporting()'を追加し、エラーをチェックします – devpro

+0

error_reportingを追加するには? – Daniel

0

この先生を試してみてください。ための(あなたがテーブルの上にユーザタイプを持っている場合)

例:

User_Account:(The table) 
    User_type(1 is admin)(0 is client) 
    ID | First_name | Last_name | Username | Password | User_type 
    1 Michael  Jordan  MJ23  6rings  1 
    2 Kobe  Bryant  KB24  5rings  0 

M ODEL:

public function login($user,$pass){ 
     $data = array(
     'Username' => $user, 
     'Password' => $pass); 

     $query = $this->db->get_where('user_account',$data); 
     return $query->result_array(); 
    } 

VIEW:

<form action="<?php echo base_url(); ?>index.php/My_Controller/login_user" method="post"> 
    Username: <input type="text" name="username"/><br/> 
    Password: <input type="password" name="password"/><br/> 
    <button type="submit">LOGIN</button> 
    </form> 

CONTROLLER:

public function login_user(){ 
     $user = $this->input->post('username');//this is from the name on input 
     $pass = $this->input->post('password');//this is from the name on input 

     $result=$this->My_Model->login($user,$pass); 

     $usertype = $result["0"]["User_type"];//this is from the database, whenever you login a user which is valid this is what you will use to see what is his User_type 

     if($usertype == 1){ 
      redirect('My_Controller/show_admin'); 
     } 
     else if($usertype == 0){ 
      redirect('My_Controller/show_client'); 
     } 
    } 

はこれを試してみてください:あなたが質問がある場合だけでコメント!

+0

あなたはまた、セッションをusertypeすることができます! – GGsThePlayDude

+0

だから、$ usertype = $ result ["0"] ["User_type"]; – GGsThePlayDude

+0

この$ _SESSION ["Usertype"] = $ result ["0"] ["User_type"]を使用してください。 と$ _SESSIONは、他のコントローラでも実行できるように、グローバル変数です。 – GGsThePlayDude