繁体   English   中英

成功登录codeigniter后未显示UserId

[英]UserId is not displaying after successfull login in codeigniter

我是Codeigniter的新手,我已经创建了一个登录表单,我能够成功登录,登录后我也获得了登录用户名也很好。但是当我尝试获取用户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){
    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;

在“查看”页面中,我正在访问像这样的数据,但是它给id留空,但用户名很好。

看起来您只是在checklogin函数中检查用户名和密码在数据库中是否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并使用它来设置用户数据。

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

您正在获取用户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;
        }

您可以在模型中进行以下更改。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM