如何使用set_userdata登录代码igniter

时间:2018-11-13 10:34:08

标签: php codeigniter login

我收到消息错误:试图获取非对象的属性,但我不知道解决了此问题。请帮助

CONTROLLER

public function login_user(){
     $user =array( 'email_user'=> $this->input->post('email_user'),
            'password_user'=> $this->input->post('password_user'));
     $myquery= $this->user_model->login_check($user['email_user'], 
             $user['password_user']);
 if ($myquery== TRUE) {
     foreach($myquery as $d){ 
         $session_array = array(
               'id_user'=>$d->id_user,
               'username_user'=>$d->username_user,
               'email_user'=>$d->email_user,
               'phone_user'=>$d->phone_user,
               'tanggal_lahir'=>$d->tanggal_lahir
         );
         $this->session->set_userdata('loggedIn',$session_array);}
         $this->load->view('v_formluar.php');
      }
      else{
        $this->session->set_flashdata('error_msg', 'Error occured,Try again.');
        $this->load->view('v_login.php');
      }
 }

我不知道要从模型到控制器获取数据,

我的模型

public function login_check($email, $password){

   $this->db->select('registrasi.user_id,
                      registrasi.username_user,
                      registrasi.email_user,
                      registrasi.password_user')
      ->from('registrasi')
      ->where("registrasi.email_user = '$email' OR registrasi.username_user = '$email' ");

     $query = $this->db->get();

    if($query->num_rows() == 1){
        return $query->row();
    } else {
        return false;
    }
} 

4 个答案:

答案 0 :(得分:0)

您使用$myquery是不正确的,因为您的模型返回了数据或为false。更改控制器代码,如下所示:

 public function login_user(){
 $user =array( 'email_user'=> $this->input->post('email_user'),
        'password_user'=> $this->input->post('password_user'));
 $myquery= $this->user_model->login_check($user['email_user'], 
         $user['password_user']);
 if ($myquery!=FALSE) {
 foreach($myquery as $d){ 
     $session_array = array(
           'id_user'=>$d->id_user,
           'username_user'=>$d->username_user,
           'email_user'=>$d->email_user,
           'phone_user'=>$d->phone_user,
           'tanggal_lahir'=>$d->tanggal_lahir
     );
     $this->session->set_userdata('loggedIn',$session_array);}
     $this->load->view('v_formluar.php');
  }
  else{
    $this->session->set_flashdata('error_msg', 'Error occured,Try again.');
    $this->load->view('v_login.php');
  }
}

答案 1 :(得分:0)

首先将模型加载到控制器中

$this->load->model('your_model_name_m');

然后您可以在控制器中使用模型:

$logged_in = $this->your_model_name_m->login_check('me@us.com', 'password!#$');

如果您经常使用此模型,也可以通过模型部分中的配置文件自动加载它:

$autoload['model'] = array( "your_model_name" );

答案 2 :(得分:0)

尝试替换

if($myquery==TRUE){ 
// your code
} 

if($myquery){ 
// your code
}

答案 3 :(得分:0)

您的模型

在数据库条件中使用方括号

public function login_check($email, $password){
$this->db->select('registrasi.user_id,
                  registrasi.username_user,
                  registrasi.email_user,
                  registrasi.password_user')
  ->from('registrasi')
  ->where("(registrasi.email_user = '$email' OR registrasi.username_user = '$email' )");

 $query = $this->db->get();
if($query->num_rows() == 1){
    return $query->row();
} else {
    return false;
}
}

您的控制器

if(isset($myquery) && $myquery != ''){
    //foreach loop
}else{
 //No record found
}

您还可以根据情况使用where()or_where()

Read More

相关问题