2016-02-16 1 views
0

J'ai créé un système de connexion dans codeigniter. Cela fonctionne bien, mais quand je me connecte, il enregistre seulement 2 variables qui sont le login et le mot de passe mais ne me montre pas la 3ème variable de la session qui est user_type. J'ai trop essayé mais je n'arrive pas à comprendre ce qui ne va pas.session ne regestant pas la variable 3

code modèle

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 
    } 
} 

contrôleur de code tarifs se situe

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; 
     } 
    } 

séance Code Variable

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 */ 

Répondre

0

Parce que vous ne choisissez pas user_type dans votre requête de sélection.

Modifier ceci:

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

Avec ceci:

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

et vous s'il vous plaît me dire que ce qui est la différence entre ces deux requêtes –

+0

Votre requête précédente considéré 'user_type' comme second paramètre. C'est pourquoi il n'est pas sélectionné dans votre requête. –

+0

ow oui mon erreur merci ami –