我是codeigniter的新手我已经创建了一个登录表单,我能够成功登录并在登录后获得登录用户名也很好。但是当我尝试获取用户ID时,它显示为空。我正在显示userid就像用户名一样显示。但它显示空的原因。请提前感谢任何帮助。
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;
在View页面中,我正在访问这样的数据,但它为id提供了空,但是用户名很好。
答案 0 :(得分:1)
看起来您只是在checklogin
函数中检查数据库中的用户名和密码是否匹配。
您没有返回id
并将其存储在$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;
}
}
}
<强>控制器强> 获取id并使用它来设置userdata。
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 :(得分:0)
您正在获取用户ID但未将其存储在会话中,因此您将无法获得此ID
制作像这样的模型代码
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;
}
}
和这样的控制器代码,所以你会得到id
$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;
}
答案 2 :(得分: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;
}