UserId не отображается после успешного входа в codeigniter

Я новичок в codeigniter. У меня есть форма для входа в систему, и я могу войти в систему успешно, и после входа в систему я получаю имя пользователя для входа в систему также отлично. Но когда я пытаюсь получить идентификатор пользователя, он отображается пустым. Я отображаю идентификатор пользователя точно так же, как Отображение имени пользователя. Но это показывает пустой почему. Пожалуйста, любая помощь будет оценена спасибо заранее.

Это моя модель

class Login_Model extends CI_Model{
public function checklogin($uname,$pass){
$this->db->select('id','username','password');
$this->db->get('login');
$this->db->where('username',$uname);
$this->db->where('password',$pass);
$query=$this->db->get('login');
if($query->num_rows()==1){
return true;
}else{
return false;
}

}

Это мой контроллер

 public function verifyuser(){
$name=$this->input->post('username');
$password=$this->input->post('password');
$this->load->model('Login_Model');
if($this->Login_Model->checklogin($name,$password)){
$this->Login_Model->checklogin($name,$password);
$this->session->set_userdata('username', $name);
$this->session->set_userdata('id', $id);
return true;
}else{
$this->form_validation->set_message('verifyuser','username or password is invalid');
return false;
}

}

Этот вид

 $id= $this->session->userdata('id');
echo "login id is".$id;

на странице просмотра я обращаюсь к таким данным, но они дают пустое значение для идентификатора, но это нормально.

0

Решение

Похоже, вы просто проверяете, совпадают ли имя пользователя и пароль в базе данных в checklogin функция.

Вы не возвращаете id и хранить его в $id переменная.

Следовательно, так как $id не определено, значение не печатается.

Требуются изменения

модель
Получить идентификатор из базы данных и вернуть его вместо логического.

class Login_Model extends CI_Model{
public function checklogin($uname,$pass){
$this->db->select('id','username','password');
$this->db->get('login');
$this->db->where('username',$uname);
$this->db->where('password',$pass);
$query=$this->db->get('login');
if($query->num_rows()==1){
$res = $query->row_array();
return $res['id'];
} else {
return false;
}
}
}

контроллер
Получите идентификатор и используйте его для установки пользовательских данных.

public function verifyuser(){
$name=$this->input->post('username');
$password=$this->input->post('password');
$this->load->model('Login_Model');
$id = $this->Login_Model->checklogin($name,$password);
if($id){
$this->session->set_userdata('username', $name);
$this->session->set_userdata('id', $id);
return true;
} else {
$this->form_validation->set_message('verifyuser','username or password is invalid');
return false;
}
}
1

Другие решения

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

сделать код модели вот так

public function checklogin($uname,$password)
{
$this->db->select('user_id','user_email','user_password');
$this->db->from('users');
$this->db->where('user_email',$uname);
$this->db->where('user_password',$password);
$res = $this->db->get()->result_array();
if(!empty($res))
{
return $res[0]['user_id'];
}
else
{
return 0;
}
}

и код контроллера, как это, так что вы получите идентификатор

$name=$this->input->post('username');
$password=$this->input->post('password');
$user_id=$this->Login_model->checklogin($name,$password);
if($user_id > 0)
{
$this->session->set_userdata('username', $name);
$this->session->set_userdata('id', $user_id);
return true;
}
else
{
$this->form_validation->set_message('verifyuser','username or password is invalid');
return false;
}
0

Вы можете внести следующие изменения в вашу модель.

class Login_Model extends CI_Model{
public function checklogin($uname,$pass){
$query = $this->db->select('id','username','password');
->where(['username'=>$uname,'password'=>$pass]);
->get('login');

return  $query->row()->id;
}
0
По вопросам рекламы [email protected]