成功登录codeigniter后,UserId未显示

时间:2018-01-12 05:12:37

标签: php codeigniter mysqlimport

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

}

这是mycontroller

 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提供了空,但是用户名很好。

3 个答案:

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