2016-02-16 121 views
0

我已經在codeigniter中創建了一個登錄系統。它工作正常,但是當我登錄時,它只註冊了2個變量,它們是登錄名和密碼,但沒有顯示會話中user_type的第三個變量。我嘗試了太多,但我不明白什麼是錯的。會話不會regestring 3變量

型號代碼

function login($username, $password) { 
    //create query to connect user login database 
    $this->db->select('user_id, username, password','user_type'); 
    $this->db->from('login'); 
    $this->db->where('username', $username); 
    $this->db->where('password', $password); 
    $this->db->where('status',1); 
    $this->db->limit(1); 

    //get query and processing 
echo $query = $this->db->get(); 
    if($query->num_rows() == 1) { 
     return $query->result(); //if data is true 
    } else { 
     return false; //if data is wrong 
    } 
} 

varifying代碼控制器

function index() { 
$this->form_validation->set_rules('username', 'username', 'trim|required|xss_clean'); 
$this->form_validation->set_rules('password', 'password', 'trim|required|xss_clean|callback_check_database'); 

    if($this->form_validation->run() == FALSE) { 
     $this->load->view('v_login'); 
     } else { 
      //Go to private area 
      redirect(base_url('c_home'), 'refresh'); 
     } 
} 

function check_database($password) { 
    //Field validation succeeded. Validate against database 
    $username = $this->input->post('username'); 
    //query the database 
    $result = $this->login->login($username, $password); 
    if($result) { 
     $sess_array = array(); 
     foreach($result as $row) { 
      //create the session 
      $sess_array = array('user_id' => $row->user_id, 
       'username' => $row->username, 
       'user_type'=> $row->user_type 
       ); 
      //set session with value from database 
      $this->session->set_userdata('logged_in', $sess_array); 
      } 
     return TRUE; 
     } else { 
      //if form validate false 
    $this->form_validation->set_message('check_database', '<p style="color: red;">اسم المستخدم/كلمة المرور غير صحيحة ! </p>'); 
      return FALSE; 
     } 
    } 

會話變量代碼

function session_start(){ 
    /*---------------------------- session start here */ 

    if($this->session->userdata('logged_in')) 
    { 
     $session_data = $this->session->userdata('logged_in'); 
     $data['username'] = $session_data['username']; 
     $data['id'] = $session_data['user_id']; 
     $data['user_type'] = $session_data['user_type']; 





    } else { 
     //If no session, redirect to login page 
     redirect('c_login', 'refresh'); 
    } 
    /* ---------------------- session start ends */ 

回答

0

因爲你是不是在你的選擇查詢選擇user_type

更改此:

$this->db->select('user_id, username, password','user_type'); 

有了這個:

$this->db->select('user_id, username, password,user_type'); 
+0

,並請你告訴我,什麼是您以前的查詢視爲'user_type'作爲第二個參數這兩個查詢之間的區別 –

+0

。這就是爲什麼它沒有在你的查詢中被選中。 –

+0

ow是我的錯誤感謝朋友 –